这是我的代码:
#include <stdio.h>
#include <stdlib.h>
main(){
FILE* fp = fopen("img.ppm","w");
fprintf(fp,"%c", 10);
fclose(fp);
return 0;
}
由于某种原因我无法发现,这会将2个字节写入文件:&#34; 0x0D 0x0A&#34;虽然我期望的行为是它只能写&#34; 0x0A&#34;十进制10。它似乎适用于包含0到255之间的每个其他值,它只是将一个字节写入文件。我完全迷失了,有什么帮助吗?
答案 0 :(得分:3)
假设您使用的是Windows C运行时库,换行符将写为\r\n
或13 10
。这是0x0D 0x0A
。这是唯一一个实际写成两个字符的字符(通过使用Windows工具链编译的软件)。
您需要使用fopen("img.ppm","wb")
打开文件来编写二进制文件。