Функция fprintf не работает, но возвращает положительное число

0

Я использую fprintf следующим образом. Кажется, все в порядке, но fprintf вообще не печатает в моем файле!

fprintf(pFile, "%s\n", "print");

Что-то странное в том, что fprintf возвращает OK. он возвращает 6 в приведенном выше коде, но не печатает в файл!

Файл создается успешно, но пуст.

изменение его на printf - печать и OK тоже.

  • 0
    Как вы открыли pFile? Вы проверяли возвращаемое значение при открытии файла?
  • 0
    Пожалуйста, покажите код, который открывает файл.
Показать ещё 2 комментария
Теги:
printf
stdio
buffering

1 ответ

3
Лучший ответ

fprintf и другие функции вывода stdio буферизуются, что означает, что вывод сначала сохраняется в памяти, а не печатается до конца. При печати на экране с использованием стандартного вывода каждая новая строка очищает буфер, поэтому с printf вы сразу увидите результат, но при печати в файл буфер не будет очищаться, пока вы не напишите (например) 4096 байт. Вы можете добавить fflush(pFile); для сброса буфера, если вам по какой-то причине требуется, чтобы результат отображался в файле быстро.

Буфер также очищается при вызове fclose или закрытии файла неявно, если он выйдет из программы, но если программа продолжает работать, не закрывая файл, или если он выйдет из строя, вам понадобится fflush чтобы увидеть результат в файле.

  • 0
    Спасибо большое! Это помогло мне. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню