我在我的c应用程序中写入日志文件,写入文件的方法是
fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a"); fprintf(fMainFile, "SomeText"); fclose(fMainFile);
我打开手柄,写完之后我把它关了,但是这个文字在一段时间后崩溃了我的应用程序,能不能把这个问题弄清楚,多less次危险的打开和closures手柄一次又一次,或者提出了其他的方法来扭动文件。
fMainFile是如何定义的? 我怀疑你应该有:
fopen_s(&fMainFile, "c:\\LOG\\Filter.txt", "a"); fprintf(&fMainFile, "SomeText"); fclose(&fMainFile);
像fopen_s一样传递fprintf / fclose函数的引用!
编辑:这个答案是无效的,因为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); }