Запись файла выходит в c

Я пишу файл журнала в своем c приложении, методе для записи, что файл

fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a");
fprintf(fMainFile, "SomeText");
fclose(fMainFile);

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

1
задан Johnsyweb 23 June 2010 в 07:52
поделиться

3 ответа

Как определяется fMainFile? Я подозреваю, что вам необходимо:

fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a");
fprintf(&fMainFile, "SomeText");
fclose(&fMainFile);

Передать ссылку на функции fprintf / fclose, как вы это сделали с fopen_s!

РЕДАКТИРОВАТЬ: этот ответ недействителен, поскольку fopen_s принимает параметр FILE **, как указано ниже в комментариях.

РЕДАКТИРОВАТЬ2: Как я сказал в комментариях, вам следует выполнять буферизованную запись (либо с вашим собственным буфером, либо с использованием функций setvbuf () для вашего файла). Кроме того, не открывайте / закрывайте файл каждый раз, а оставляйте его открытым и закрывайте только тогда, когда это действительно необходимо (ввод завершен). используйте fflush () для принудительной записи на диск (вместо fclose ()).

1
ответ дан 2 September 2019 в 23:36
поделиться

Вам определенно следует добавить проверку ошибок в ваш код, смотрите http://msdn.microsoft.com/en-us/library/z5hh6ee9%28VS.80%29.aspx для конкретного примера fopen_s. Возможно, таким образом вы сможете получить больше информации. Кроме того, ваш фрагмент кода выглядит корректно.

1
ответ дан 2 September 2019 в 23:36
поделиться

Вы должны проверить возвращаемое значение fopen_s и вызывать fprintf и fclose только в случае успеха

if (fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a") == 0)
{
  fprintf(fMainFile, "SomeText");
  fclose(fMainFile);
}
0
ответ дан 2 September 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: