Cita de: yoel_alejandro en 24 Marzo 2014, 17:21 PMpreparé un sencillo código que abre el fichero como lectura, toma sus líneas y las escribe al fichero2, además imprime por pantalla lo que va leyendo para verificar como marcha del programa.Dos recomendaciones:
* No hay necesidad de generar manualmente el mensaje de error, en su lugar se puede utilizar la función perror (prototipo en <stdio.h>).
* Ya que el valor de retorno de un programa en salida anormal es implementation defined es mejor utilizar la macro EXIT_FAILURE (definida en <stdlib.h>).
Cita de: yoel_alejandro en 24 Marzo 2014, 17:21 PMNota que al final imprime una línea vacía, ésto es porque el fichero está terminado en un return (un '\n'). Se podría eliminar ese defecto inspeccionando el contenido copiado al buffer.Tal como esta el programa este no puede imprimir una linea en blanco salvo la obviedad de que el archivo de entrada ... tenga una linea en blanco al final de este.
Pero si la entrada es:
Código [Seleccionar]
Hola
Mundo
Hugo Paco Luis
Entonces no hay forma de que el programa reporte cuatro lineas.
Otras dos observaciones:
* El uso de feof en el bucle es innecesario:
Código (c) [Seleccionar]
linea = 1;
while ( !feof (fichero) ) {
if ( fgets ( buffer, 1001, fichero ) != NULL )
printf ("Linea %d: \n\t%s", linea++, buffer );
}
Ya que no se recomienda el uso de feof (salvo contados escenarios) se puede eliminar esta reduciendo el bucle a:
Código (c) [Seleccionar]
linea = 1;
while (fgets(buffer, 1001, fichero) != NULL)
printf("Linea %d: \n\t%s", linea++, buffer);
* En el programa falta la declaración de la variable "linea".
Un saludo