【问题标题】:how fputc affect file size?fputc 如何影响文件大小?
【发布时间】:2014-05-05 00:02:18
【问题描述】:

我正在使用 fputc(在 C/C++ 中)将一些数据输出到文件中,文件大小在我的项目中对我很重要。但是resutling文件的大小似乎不正确,一个简单的代码示例:

FILE *fp = fopen( "123.txt", "w" );
for( int i=0; i<64; i++ )
    fputc( i, fp );
fclose( fp );

执行此代码后,文件大小为65B,不是64B,但如果我使用fputc(1,fp),文件大小为64B。 有什么诀窍吗?或者我可以做些什么来控制输出文件的大小?

【问题讨论】:

  • 'fputc 如何影响文件大小?' bytewise?!? ....
  • 您能否显示 123.txt 中的确切字节数?用hexdump -C (linux) 转储它
  • 当您输出字节值 13 (CR) 时,它可能会被转换为 CRLF,因为您 fopened 以文本与二进制模式编辑文件。将您的模式更改为 wb 并重试。
  • 或者 LF 被翻译成 CRLF。但结果相同。

标签: c++ c filesize


【解决方案1】:

我猜你是在 Windows 上这样做的。

由于您以翻译(文本)模式打开文件,因此换行符将转换为回车符/换行符对。字符代码 10 恰好被视为换行符,因此与您编写的内容相比,您最终得到了一个额外的字节。

如果您改为以二进制模式打开文件,则不会发生这种情况。

FILE *fp = fopen( "123.txt", "wb" );

注意添加到打开模式字符串中的b

【讨论】:

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