我使用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。
有什么伎俩吗?或者我可以做些什么来控制输出文件的大小?
答案 0 :(得分:8)
我猜你是在Windows上这样做的。
由于您以翻译(文本)模式打开文件,因此新行将转换为回车符/换行符对。字符代码10恰好被视为换行符,因此与您编写的内容相比,最终会得到一个额外的字节。
如果以二进制模式打开文件,则不会发生这种情况。
FILE *fp = fopen( "123.txt", "wb" );
请注意b
添加到开放模式字符串。