fprintf(fp,"%c",10)表现不尽如人意

时间:2017-02-14 16:25:15

标签: c

这是我的代码:

#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之间的每个其他值,它只是将一个字节写入文件。我完全迷失了,有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

假设您使用的是Windows C运行时库,换行符将写为\r\n13 10。这是0x0D 0x0A。这是唯一一个实际写成两个字符的字符(通过使用Windows工具链编译的软件)。

您需要使用fopen("img.ppm","wb")打开文件来编写二进制文件。