fputc如何影响文件大小?

Lip*_*ang 2 c c++ filesize

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

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

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

Jer*_*fin 8

我猜你在Windows上这样做了.

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

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

FILE *fp = fopen( "123.txt", "wb" );
Run Code Online (Sandbox Code Playgroud)

请注意b添加到打开模式字符串.