Я использую fprintf
следующим образом. Кажется, все в порядке, но fprintf
вообще не печатает в моем файле!
fprintf(pFile, "%s\n", "print");
Что-то странное в том, что fprintf
возвращает OK
. он возвращает 6
в приведенном выше коде, но не печатает в файл!
Файл создается успешно, но пуст.
изменение его на printf
- печать и OK
тоже.
fprintf
и другие функции вывода stdio буферизуются, что означает, что вывод сначала сохраняется в памяти, а не печатается до конца. При печати на экране с использованием стандартного вывода каждая новая строка очищает буфер, поэтому с printf
вы сразу увидите результат, но при печати в файл буфер не будет очищаться, пока вы не напишите (например) 4096 байт. Вы можете добавить fflush(pFile);
для сброса буфера, если вам по какой-то причине требуется, чтобы результат отображался в файле быстро.
Буфер также очищается при вызове fclose
или закрытии файла неявно, если он выйдет из программы, но если программа продолжает работать, не закрывая файл, или если он выйдет из строя, вам понадобится fflush
чтобы увидеть результат в файле.