我正在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_时一样!
编辑:此答案无效,因为fopen_s接受一个文件**参数,如下面注释中所述。
edit2:正如我在评论中所说,您应该进行缓冲写入(使用自己的缓冲区或对文件使用setvbuf()函数)。另外,不要每次都重新打开/关闭文件,而是让它保持打开状态,只有在真正需要时(输入完成)才关闭它。使用fflush()强制写入磁盘(而不是fclose())。