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

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

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

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

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

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


person saeed M    schedule 25.10.2013    source источник
comment
Как вы открыли pFile? Вы проверяли возвращаемое значение при открытии файла?   -  person Claudio    schedule 25.10.2013
comment
Пожалуйста, покажите код, который открывает файл.   -  person Kakalokia    schedule 25.10.2013
comment
Вы звоните fclose? В противном случае буферы могут быть не очищены!   -  person jclehner    schedule 25.10.2013
comment
Это может помочь с ответом Томаса, если вам не ясно, что такое очистка буфера stackoverflow.com/questions/15042849/   -  person Kakalokia    schedule 25.10.2013


Ответы (1)


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

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

person Thomas Padron-McCarthy    schedule 25.10.2013
comment
Большое спасибо! Мне это помогло. :) - person saeed M; 25.10.2013