Как записать в текстовый файл с помощью программы C - PullRequest
2 голосов
/ 29 июня 2009

моя проблема в том, что fprintf печатает только часть ожидаемого вывода в файл. Когда я использую printf, вывод правильно печатается в окне вывода, показывая, что цикл верен, но когда я использую его с fprintf, полный вывод не печатается. Только начальная часть печатается.

Пожалуйста, сообщите, в чем может быть проблема ???

спасибо заранее ...

Ответы [ 4 ]

5 голосов
/ 29 июня 2009

Могу поспорить, что вы не сбросили / закрыли ваш файл.

3 голосов
/ 09 августа 2009

Вероятно, проблема в том, что вы не говорите C на самом деле записать данные на диск. Обычно это происходит автоматически при закрытии файла и может происходить автоматически в другое время (например, при заполнении внутренних буферов).

Похоже, вы пишете всего несколько байтов, а затем проверяете файл, чтобы увидеть, что произошло. Если это так, ваша программа может хранить эти байты во внутреннем буфере, прежде чем записывать их на диск. Это делает это для повышения производительности в общем случае - обычно вам не требуется доступ к диску для каждого отдельного оператора печати.

Одним из решений, как предлагают другие ответы, является вызов fflush. Это «сбросит» все буферизованные данные на диск. Есть и другие решения, такие как отключение буферизации, но вызов fflush - лучший первый шаг, так как вы новичок в программировании.

Для получения дополнительной информации вот ссылка на вики-книгу о файловом вводе / выводе с C. Вы можете перейти прямо к разделу на fflush , хотя вы можете прочитать вводные абзацы, чтобы получить немного больше понимания.

2 голосов
/ 29 июня 2009

Звучит так, как будто вы забыли сделать fflush или fclose

0 голосов
/ 09 августа 2009

вы пытаетесь использовать fflush ()

...