我在我的c应用程序中编写日志文件,编写文件的方法是
fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a");
fprintf(fMainFile, "SomeText");
fclose(fMainFile);
我打开手柄,写完后关闭它,但是这篇文章在一段时间后崩溃了我的应用程序,可以解决这个问题,一次又一次打开和关闭手柄有多大危险,或者提出任何其他建议扭动文件的方法。
答案 0 :(得分:1)
如何定义fMainFile?我怀疑你应该:
fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a");
fprintf(&fMainFile, "SomeText");
fclose(&fMainFile);
像对fopen_s一样传递对fprintf / fclose函数的引用!
编辑:这个答案无效,因为fopen_s在评论中采用FILE **参数,如下所述。
EDIT2:正如我在评论中所说,你应该做缓冲写入(使用自己的缓冲区或使用setvbuf()函数为你的文件)。此外,不要每次都重新打开/关闭文件,但只有在您确实需要(输入完成)时才将其保持打开和关闭状态。使用fflush()强制写入磁盘(而不是fclose())。
答案 1 :(得分:1)
您一定要在代码中添加一些错误检查,有关特定的fopen_s示例,请参阅http://msdn.microsoft.com/en-us/library/z5hh6ee9%28VS.80%29.aspx。也许你可以通过这种方式获得更多信息。除此之外,您的代码段看起来是正确的。
答案 2 :(得分:0)
你必须检查fopen_s的返回值,如果成功则只调用fprintf和fclose
if (fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a") == 0)
{
fprintf(fMainFile, "SomeText");
fclose(fMainFile);
}