我强行退出时无法写入文件

时间:2012-04-03 15:22:41

标签: c++

我有一个看起来像这样的程序。我需要不断地在文本文件中写入内容,但我无法预先确定程序何时结束。所以我强行退出该计划。

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

问题是文本文件是空的。谁能给我一些建议? 我正在使用XCode来完成这项工作。

2 个答案:

答案 0 :(得分:3)

fflush(f)之后使用fprintf(f)否则您打印的数据仍然在stdio的流缓冲区中,但尚未到达文件系统。

请注意,经常这样做可能会大大降低您的表现。

答案 1 :(得分:0)

写入文件的另一种方法是使用追加模式并在不需要时关闭文件。

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

在您的情况下,如果您在睡眠阶段'强制退出',则此时不会打开该文件。