【问题标题】:File write in C confusionC混淆中的文件写入
【发布时间】:2009-06-25 12:47:29
【问题描述】:

您好,我在文本文件的底部附加,这适用于 Windows,但在 linux 上,而不是附加到底部,而是附加到文本文件的顶部。我正在使用的代码是。代码只能使用 C

FILE *fout;
fout = fopen("dat.txt","a");  
fprintf(fout,"&& ");
fclose(fout);

请帮忙。谢谢

【问题讨论】:

  • 我觉得不错。我没有 Linux,但在我这里的 Solaris 上肯定没问题。
  • 在 linux 上也可以正常工作。如果您在实际代码中(任何地方)对该文件句柄执行任何其他操作,请也发布。
  • 一两次,我遇到过特别棘手的情况,ccache 似乎在编译/测试周期中给我带来了问题。如果在您的 Linux 主目录中有一个名为“.ccache”的隐藏目录 - 请尝试将其删除。只是一时兴起,但该代码是正确的,所以问题不在于您发布的内容。

标签: c file


【解决方案1】:

检查从这些系统调用返回的错误 - 该代码看起来正确。此外,请检查以确保您不会在代码中的其他地方意外修改 dat.txt。

【讨论】:

    【解决方案2】:

    这应该没问题。再次检查您的代码,也许您正在重新定位文件指针,在某处使用 frewind 或 fseek 。更好的方法是使用“a+”选项。您还应该检查 fopen 的返回值 fout。

    【讨论】:

    • fseek 和朋友应该不会影响以附加模式打开的文件的写入位置。对附加模式文件的写入始终位于文件末尾。如果他们不这样做,那么底层的 C 库就是错误的。
    【解决方案3】:

    如果您在追加之前对该文件执行了任何其他操作,请确保您正在关闭它。

    【讨论】:

      【解决方案4】:

      我在 Mac OS (Linux) 上编译,它可以像宣传的那样工作,例如该行被附加在末尾。

      您是否正在对文件执行其他操作?

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 2015-01-04
        • 2016-01-11
        • 1970-01-01
        • 2018-07-26
        • 2014-02-12
        • 1970-01-01
        • 2010-11-29
        • 2015-06-04
        相关资源
        最近更新 更多