【问题标题】:Fail to write to file when I force quit强制退出时无法写入文件
【发布时间】:2012-04-03 15:22:41
【问题描述】:

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

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

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

【问题讨论】:

标签: c++


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-08
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多