Saludos tengo el siguiente programa que me hace una copia de los caracteres que se encuentran en un archivo, el problema es que me imprime basura y creo que tiene que ver con que le puse EOF en el while para cuando se encuentre el fin de linea
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
FILE *fo,*fd;
char buffer[50];
fo = fopen("F:\\archivo1.txt","r");
fd = fopen("F:\\archivo2.txt","w");
if(fo == NULL || fd == NULL)
printf("Problemas al abrir archivos");
else
{
while(fread(buffer,sizeof(char),1,fo)!=EOF)
fwrite(buffer,sizeof(char),1,fd);
}
return 0;
}
no se por que me imprime asi
de antemano gracias
Creo que el fread está mal, el 3er parámetro debería ser la longitud de la cadena
Y deberías cerrar los archivos con fclose
Cita de: m@o_614 en 4 Septiembre 2013, 21:29 PMel problema es que me imprime basura y creo que tiene que ver con que le puse EOF en el while para cuando se encuentre el fin de linea
Si no tienes una referencia de calidad deberías conseguir una.
El problema se encuentra en el bucle y se debe a que comparas el valor de retorno de fread (numero de elemento leídos, siempre igual o mayor que cero) con la constante EOF (algún valor negativo).
Debes cambiarlo a:
while (fread(buffer, 1, 1, fo) == 1)
fwrite(buffer, 1, 1, fd);
Pero si vas a leer e imprimir carácter por carácter mejor utiliza las funciones fgetc y fputc.
Un saludo