Я пишу файл журнала в своем c приложении, методе для записи, что файл
fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a");
fprintf(fMainFile, "SomeText");
fclose(fMainFile);
Я открываю дескриптор после записи, что я закрыл его, но эта запись разрушает мое приложение через некоторое время, может любой разбираться в этой проблеме, это, насколько опасный, чтобы открыться и закрыть дескриптор снова и снова, или предложил любой другой подход для того, чтобы корчиться файл.
Как определяется 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 ()).
Вам определенно следует добавить проверку ошибок в ваш код, смотрите http://msdn.microsoft.com/en-us/library/z5hh6ee9%28VS.80%29.aspx для конкретного примера fopen_s. Возможно, таким образом вы сможете получить больше информации. Кроме того, ваш фрагмент кода выглядит корректно.
Вы должны проверить возвращаемое значение fopen_s и вызывать fprintf и fclose только в случае успеха
if (fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a") == 0)
{
fprintf(fMainFile, "SomeText");
fclose(fMainFile);
}