我有一個看起來像這樣的程序。我需要一直寫入文本文件,但是我不能預先確定程序何時結束。所以我強制退出程序。當我強制退出時無法寫入文件
FILE *f = fopen("text.txt", "w");
while (1) {
fprintf(f, "something");
sleep(1000);
}
問題是文本文件是空的。任何人都可以給我一些建議嗎? 我正在使用XCode來完成這項工作。
我有一個看起來像這樣的程序。我需要一直寫入文本文件,但是我不能預先確定程序何時結束。所以我強制退出程序。當我強制退出時無法寫入文件
FILE *f = fopen("text.txt", "w");
while (1) {
fprintf(f, "something");
sleep(1000);
}
問題是文本文件是空的。任何人都可以給我一些建議嗎? 我正在使用XCode來完成這項工作。
在fprintf(f)
之後使用fflush(f)
否則您打印的數據仍然在stdio中的流緩衝區中,並且尚未到達文件系統。
請注意,經常這樣做可能會顯着降低您的性能。
寫入文件的另一種方法是使用追加模式並在不需要時關閉文件。
while (1) {
FILE *f = fopen("text.txt", "a");
if (f != NULL) {
fprintf(f, "something");
fclose(f);
}
sleep(1000);
}
就你的情況而言,如果你在休眠階段'強制退出',此時文件將不會被打開。
你可能看看這個問題http://stackoverflow.com/questions/914613/what-exactly-is-the-effect-of-ctrl-c-on-c-win32-console-applications它是特定的窗口,但第二個答案可能會給你一個想法 – 2012-04-03 15:49:40