【发布时间】:2021-06-21 13:39:29
【问题描述】:
我有一个整数数组,其中每个单元格都是 0-255 之间的数字,代表我要写入输出文件的字节。 我写了这个简单的循环:
for (int i = 0; i < len ; i++)
putc(write_buffer[i], OutputFile);
但是在使用十六进制编辑器查看输出文件后,我发现某些字节在文件中被复制和/或移动。
以输入数组为例:
int write_buffer[10]= {137,80,78,71,13,10,26,10,0,0}
输出文件内容(十进制)为:137 80 78 71 13 13 10 26 13 10 0 0
有人知道是什么原因造成的吗?
【问题讨论】:
-
13 和 10 是 windows 换行符,而在类 unix 系统上是 10。似乎它主动将 10 aka \n 转换为 13, 10 aka \r\n
-
我们希望看到您的完整源代码。请编辑您的问题并发布。
putc是一个宏。write_buffer[i]有 no 副作用,所以应该没问题。你试过fputc函数吗? -
根据 Mirronelli 的分析,将
"wb"与您的fopen一起使用