fputc如何影响文件大小?

时间:2014-05-05 00:02:18

标签: c++ c filesize

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

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

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

请注意b添加到开放模式字符串。