C语言文件操作问题!!

如下所示的这段代码

 #include <stdio.h>

int main()
{
    FILE *fp=fopen("D:\\english.txt","w");
    putc(10,fp);
    fclose(fp);

    FILE *fq=fopen("D:\\english.txt","rb");
    while(!feof(fq))
    {
        unsigned char ch;
        ch=(unsigned char)getc(fq);
        int buf;
        buf=(int)ch;
        if(buf!=255)
        printf("%d\n",buf);
    }
    fclose(fq);

    return 0;
}

功能就是在文件里写十进制为10、二进制为0000 1010的一个字节,然后读出来。但是为什么读出来的结果是13和10呢?为什么会有13?

FILE *fp=fopen("D:\english.txt","w"); 更改为 FILE *fp=fopen("D:\english.txt","wb");
或者将FILE *fq=fopen("D:\english.txt","rb"); 更改为 FILE *fq=fopen("D:\english.txt","r");

文件读写方式要保持一致:如:都是二进制形式读写,或者都是字符等

因为有回车换行,13是回车,10是换行,你记事本打开,把末尾的回车删除试试看