日期:2014-05-16  浏览次数:20715 次

关于文本文件和二进制文件的疑惑
    FILE *fp_txt = NULL;
    FILE *fp_bin = NULL;

    fp_txt = fopen("a", "w");
    fp_bin = fopen("b", "wb");

    fputc(12, fp_txt);
    fputc(12, fp_bin);

    fclose(fp_txt);
    fclose(fp_bin);

写了一小段代码试验文本文件和二进制文件的区别,结果发现输出的文件是一样的。我觉得输出应该是:
a文件:31 32        分别是1和2的ASCII码
b文件:12           直接输出12的值

结果上面程序输出后的文件内容是一样的,都是12,用UE打开显示0C。说明都是按二进制文件来写的。
搜了下资料,没发现讲的比较好的。

糊涂了,还望各位大侠指点迷津啊!!

------解决方案--------------------
    fputc(12, fp_txt);
     fputc(12, fp_bin);
你写一样的东西,当然就是一样的,和你带不带二进制方式无关。
你要明白带不带二进制只是读写内容的方式,和内容是无关的。
------解决方案--------------------
兄弟,谭浩强的书害人不浅。文本文件和2进制文件本质上没啥区别,对于计算机来说都是2进制。所以,你完全可以对一个有'b'参数的文件用fprintf。只不过windows多此一举,在以2进制文件打开的时候'\n'就是'\n',而在文本文件模式下'\n'前面就多加了个'\r'
------解决方案--------------------
两种模式对于\r\n的处理不一样。