Título: Ayuda con fprintf y fgets [Solucionado] Publicado por: Luchoz95 en 21 Abril 2013, 06:21 am Gente sigo con problemas similares al anterior tema que publique , miren este codigo
es un directorio de telefono que estoy probando ... Código
el problema esta que cuando se lee el archivo se lee tambien el ultimo '\n' y pasa lo siguiente ... (http://img248.imageshack.us/img248/6058/problemafgets.png) como vemos se repite la ultima linea ... algun consejo ? S2! Título: Re: Ayuda con fprintf y fgets Publicado por: Luchoz95 en 21 Abril 2013, 07:05 am Lo solucionee gente !! hice lo siguiente
Código
S2! Título: Re: Ayuda con fprintf y fgets [Solucionado] Publicado por: rir3760 en 21 Abril 2013, 07:13 am En esa función no puedes retornar -1 ya que ella no retorna un valor (indicado mediante su tipo de retorno: void). Cambia la sentencia de retorno a:
Código
Y no necesitas utilizar la función feof (salvo ciertas excepciones es mejor evitar su uso) en su lugar se puede utilizar el valor de retorno de la función utilizada. En tu caso cambia esta parte: Código Por esta: Código Un saludo Título: Re: Ayuda con fprintf y fgets [Solucionado] Publicado por: Luchoz95 en 21 Abril 2013, 07:53 am Muchas gracias por el consejo rir3760 como siempre, pero hay algo que no entiendo, supongamos que en el archivo de texto tenemos esto ...
Citar Nombre1 Apellido1 Telefono1 Nombre2 Apellido2 Telefono2 \n (Invisible) Porque utilizando esto : Código no se imprime el \n ? Título: Re: Ayuda con fprintf y fgets [Solucionado] Publicado por: rir3760 en 21 Abril 2013, 17:31 pm Porque utilizando esto : Para explicar esto lo mejor es dividirlo en dos partes, el contenido del archivo y como opera la función feof.Código no se imprime el \n ? 1) En C un archivo de texto (mas bien un stream en modo texto) consiste de cero o mas lineas seguidas de ... nada. Por ejemplo: Código: Nombre1 Apellido1 Telefono1\n El archivo se procesa carácter por carácter o (como es tu caso) por linea. Eventualmente se procesan todos los caracteres y, al no haber nada mas, se activa el estado de fin de archivo o eof.Nombre2 Apellido2 Telefono2\n (nada) 2) El porque la ultima linea se procesa dos veces se debe al uso de feof, una explicación en detalle se encuentra en el tema Re: exec y sus derivadas (http://foro.elhacker.net/buscador2-t342883.0.html;msg1680098#msg1680098). Un saludo Título: Re: Ayuda con fprintf y fgets [Solucionado] Publicado por: dato000 en 21 Abril 2013, 17:31 pm Puede que sea porque el archivo no reconoce ese tipo de caracteres, no estoy seguro, pero talvez puede ser porque reconoce ese caracter como null y entienda como el final del archivo.
de todas maneras, porque no simplemente colocas los saltos de linea en la linea de salida del menú Código Y se me hizo curioso ver, me hizo recordar mis clases con batch, ingenioso. Código |