El problema de usar lenguaje C para determinar si un archivo está vacío
No puede confiar completamente en el criterio " while(!feof(FP)){...}" en las operaciones de lectura de archivos "C". El siguiente código es el código mejorado. Una vez ejecutado el código, el contenido del archivo de salida es el mismo que el contenido del archivo de entrada, y " while (! feof (FP)) {...} " y " while (! feof (FP)) {...} ". (!feof(FP)){ se utilizan ...}", el carácter de fin de archivo (EOF) del archivo de entrada no se lee en el archivo de salida.
//main.c Linux se puede compilar normalmente.
int main(void)
{
ARCHIVO *entrada, *salida;
char ch;
if ((in = fopen(". /input.txt", "r"))== NULL) //input.txt debe existir en el directorio actual.
{
fprintf(stderr, "No se puede abrir el archivo de entrada\n");
salir( 0);
} p>
if((out=fopen(". /output.txt", "w"))==NULL)
{
fprintf(stderr, "Puede no abre el archivo.\n");
salir(0);
}
mientras(1)
{
ch=fgetc(in);
if(ch == -1)
break;
fprintf(stdout, "El ASC de char % c es %d\n ",ch,ch);
fputc(ch,out);
}
fclose(in);
fclose(out);
devuelve 0;
}