Закрытие файла: Когда это делается с файлом, его необходимо закрыть с помощью функции fclose().
fclose(ifp);
fclose(ofp);
Закрытие файла очень важно, особенно с выходными файлами. Причина в том, что вывод часто буферизуется. Это означает, что когда вы говорите C, чтобы написать что-то, например,
fprintf(ofp, "Whatever!\n");
не нужно получить записываются на диск сразу, но может оказаться в буфере в памяти. Этот выходной буфер будет держать текст временно: выходной буфер
Пример:
----------------------------------------------
| a | b | c | W | h | a | t | e | v | e | r |
----------------------------------------------
| ! | \n | | | | | | | | | |
----------------------------------------------
| | | | | | | | | | | |
----------------------------------------------
| | | | | | | | | | | |
----------------------------------------------
...
(Буфер действительно только 1-мерным, несмотря на этот рисунок.)
Когда буфер заполняется (или когда файл закрыт), данные, наконец, записываются на диск.
Ссылка: http://www.cs.bu.edu/teaching/c/file-io/intro/
Куча ответов ниже говорит, что close() сбрасывает буферы на диск. Однако close() является функцией POSIX, и это не относится к POSIX close(). Он только освобождает блокировки и освобождает ресурсы. –