2014-05-05 72 views
2

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

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

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

+0

_'how fputc会影响文件大小吗?__bytewise?!? ... –

+0

你能从你的123.txt显示确切的字节吗?用'hexdump -C'(linux)转储它 – osgx

+6

当你输出字节值“13”(CR)时,它可能会被转换为CRLF,因为你用文本打开文件与二进制模式。将您的模式更改为“wb”并重试。 – Joe

回答

8

我想你在Windows上这样做。

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

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

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

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

+0

解决了问题!谢谢! –