关于文本文件和二进制文件的疑惑
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的处理不一样。