2012-04-03 79 views
0

我有一個看起來像這樣的程序。我需要一直寫入文本文件,但是我不能預先確定程序何時結束。所以我強制退出程序。當我強制退出時無法寫入文件

FILE *f = fopen("text.txt", "w"); 
while (1) { 
    fprintf(f, "something"); 
    sleep(1000); 
} 

問題是文本文件是空的。任何人都可以給我一些建議嗎? 我正在使用XCode來完成這項工作。

+0

你可能看看這個問題http://stackoverflow.com/questions/914613/what-exactly-is-the-effect-of-ctrl-c-on-c-win32-console-applications它是特定的窗口,但第二個答案可能會給你一個想法 – 2012-04-03 15:49:40

回答

3

fprintf(f)之後使用fflush(f)否則您打印的數據仍然在stdio中的流緩衝區中,並且尚未到達文件系統。

請注意,經常這樣做可能會顯着降低您的性能。

0

寫入文件的另一種方法是使用追加模式並在不需要時關閉文件。

while (1) { 
    FILE *f = fopen("text.txt", "a"); 
    if (f != NULL) { 
    fprintf(f, "something"); 
    fclose(f); 
    } 
    sleep(1000); 
} 

就你的情況而言,如果你在休眠階段'強制退出',此時文件將不會被打開。