关于写二进制文件多出“0D”的问题

如下一个简单的程序:

#include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; char buffer[5] = {0x01, 0x0a, 0x00, 0x00, 0x0a}; fp = fopen( "E:/my.dat ", "a+"); fwrite(buffer, sizeof(char), 6, fp); fclose(fp); return 0; }  

运行完后用UE打开my.dat,显示为“01 0D 0A 00 00 0D 0A”。

 

找了半天最后终于是发现,原来文件如果不是以二进制方式打开,那么系统会偷偷在你的LF(0x0a)后面加上CR(0x0d) 的问题造成的。
所以对于是写值的打开文件的时候要在参数列表里面加上 'b '才行。

你可能感兴趣的:(File,buffer,FP)