Cerrar un archivo: Cuando haya terminado con un archivo, debe cerrarse con la función fclose().
fclose(ifp);
fclose(ofp);
Cerrar un archivo es muy importante, especialmente con los archivos de salida. La razón es que la salida a menudo se almacena en el búfer. Esto significa que cuando usted le dice C a escribir algo, por ejemplo,
fprintf(ofp, "Whatever!\n");
No es necesario que se escriba en el disco de inmediato, pero puede terminar en un bufferen la memoria. Este búfer de salida se sostendría el texto temporalmente: buffer de salida
muestra:
----------------------------------------------
| a | b | c | W | h | a | t | e | v | e | r |
----------------------------------------------
| ! | \n | | | | | | | | | |
----------------------------------------------
| | | | | | | | | | | |
----------------------------------------------
| | | | | | | | | | | |
----------------------------------------------
...
(La memoria intermedia es realmente sólo 1 dimensión pesar de este dibujo.)
Cuando la memoria se llena (o cuando el archivo está cerrado), los datos finalmente se escriben en el disco.
Referencia: http://www.cs.bu.edu/teaching/c/file-io/intro/
Un montón de respuestas a continuación dicen que close() vacía búferes en el disco. Sin embargo, close() es una función POSIX y no existe tal cosa con POSIX close(). Solo libera bloqueos y libera recursos. –