繁体   English   中英

如何将字节单独写入 C 中的文件?

[英]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); (对于stdout1可以替换第一个参数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM