[英]How to write bytes individually into a file in C?
我有一个整数数组,其中每个单元格都是 0-255 之间的数字,代表我要写入 output 文件的字节。 我写了这个简单的循环:
for (int i = 0; i < len ; i++)
putc(write_buffer[i], OutputFile);
然而,在使用十六进制编辑器查看 output 文件后,我发现某些字节已在文件中重复和/或移动。
例如输入数组:
int write_buffer[10]= {137,80,78,71,13,10,26,10,0,0}
output 文件内容(十进制)为:137 80 78 71 13 13 10 26 13 10 0 0
有没有人知道可能导致这种情况的原因?
心理调试:您在 Windows 上以文本模式打开文件,通过fopen
模式"wt"
或者,当_fmode
设置为_O_TEXT
时,这是默认值"w"
,这意味着它正在应用行结束翻译,转换 LF ( '\n'
/ 10
) 到 CRLF ( '\r' '\n'
, 13 10
)。
更改您的fopen
以传递"wb"
模式,而不仅仅是"w"
/ "wt"
,因此文件以二进制模式运行,并且不会使用任何 C stdio 函数执行转换。
pts 在评论中做了一个有用的说明:如果您没有自己打开文件(使用stdout
或由您无法控制的代码打开的句柄),您可以使用setmode(fileno(OutputFile), O_BINARY);
(对于stdout
, 1
可以替换第一个参数)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.