2012-04-03 22 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窓は特定ですが、2番目の答えはあなたにアイデアを与えるかもしれません –

答えて

3

fflush(f)の後にfprintf(f)を使用します。それ以外の場合は、印刷されたデータはまだstdioのストリームバッファに残り、まだファイルシステムに達していません。

この処理を頻繁に行うと、パフォーマンスが大幅に低下する可能性があります。

0

ファイルに書き込むもう1つの方法は、追加モードを使用して、不要になったときにファイルを閉じることです。

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

あなたのケースでは、スリープフェーズで強制終了すると、この時点ではファイルが開かれません。

関連する問題