【问题标题】:How to write a full string to a file?如何将完整的字符串写入文件?
【发布时间】:2010-02-07 09:38:27
【问题描述】:

我现在在 Windows 中编程,但也欢迎可移植代码。

我现在使用的是fwrite(4),但是这个函数需要最大数量的元素写入文件。我可以在这里使用strlen(1),但我想知道是否有更好的方法来做到这一点。

【问题讨论】:

    标签: c windows string file-io


    【解决方案1】:

    改用fputs

    FILE * f = fopen( "myfile.txt", "w" );
    fputs( "Hello world\n", f );
    

    【讨论】:

      【解决方案2】:

      您可以使用fputs,但使用需要写入大小的函数更安全(缓冲区溢出)。

      因此,恕我直言,使用fwrite 将是首选。

      【讨论】:

      • fwrite 没有给你这样的保护——你必须使用 strlen() 来获取大小,它可以有效地完成 fputs 的工作
      • 使用 strlen 的 fwrite 比 fputs 更安全吗?如果字符串缺少零终止符,两者都会溢出缓冲区。
      • 将 fwrite 与 strlen 一起使用不会提供溢出保护,因为 strlen 本身不提供这种保护。
      • 没有功能真正提供这种保护。但是一旦你必须通过你所写的长度,就不太可能犯 BO 错误。
      • @Am 不,您更有可能犯错误 - 例如明确提供错误的长度。
      【解决方案3】:

      您可以先检查预期长度内的空值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多