一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICOD 从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编 二、文本文件与二进制文件的存取 文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理 事实上,世界上任何东西要与其他东西通信会话,都存在一个既定的协议,既 文本文件的存储与其读取基本上是个逆过程,不再累述。而二进制文件的存取显然
三、文本文件与二进制文件的优缺点 因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码 很多书上还认为,文本文件的可读性要好些,存储要花费转换时间(读写要编译码) 四、C的文本读写和二进制读写 应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统 C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写 总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进 下面给出一个小程序来证明前面的观点. 1、编写如下程序.该程序将字符串"12/n3"分别以文本方式和二进制方式写入test1和t 读test1,以二进制方式读test2. #include<stdio.h> int main() { FILE * fp_text,* fp_binary; char write_buf[4]={''1'',''2'',''/n'',''3''}; char read_buf_text[6],read_buf_binary[6]; int read_count_text,read_count_binary; //未检测打开是否失败 fp_text=fopen("test1","wt+"); fp_binary=fopen("test2","wb+"); fwrite(write_buf,4,1,fp_text); fwrite(write_buf,4,1,fp_binary); //fflush(fp_text); //fflush(fp_binary); fseek(fp_text,0L,SEEK_SET);//fseek附带了fflush功能 fseek(fp_binary,0L,SEEK_SET);// read_count_text=fread(read_buf_text,sizeof(char),5,fp_text); read_count_binary=fread(read_buf_binary,sizeof(char),5,fp_binary); //加''/0'',便于打印字符串 read_buf_text[read_count_text]=''/0''; read_buf_binary[read_count_binary]=''/0''; printf("In Text Mode:read_count=%d,string=%s/n",read_count_text,read_buf printf("In Binary Mode:read_count=%d,string=%s/n",read_count_binary,read fclose(fp_text); fclose(fp_binary); return 0;
} 2、该程序在VC6.0下编译运行,显示结果如下(追忆"//"及其右边内容是我手动加的注释 In Text Mode:read_count=4,string=12 3 //文本方式读test1,读到的字符与原先写入test1的 In Binary Mode:read_count=4,string=12 3 //二进制方式读test1,读到的字符与原先写入test1 3.用记事本打开test1和test2,结果如下: test1的内容: 12 3 //文本方式写入的,有换行效果,参看下面的4 test2的内容 123 //二进制方式写入的, 无换行效果(记事本对"/r/n"之外的控制字符串无 4、用vc6.0以Binary方式(二进制方式)打开test1和test2,结果如下(用其他二进制读 test1的内容 31 32 0D 0A 33//十六进制,5个字节,比写入缓冲区多了一个字节,在''/n''(0AH)前 test2的内容 31 32 0A 33//十六进制,4个字节,与写入缓冲区的值一致.
5、总结 从4可以看出,文本方式写时,存在''/n''->''/r/n''的转换,而二进制方式无转换. 6.补充说明 上述说明仅适用于windows,在linux中文本方式的读写与二进制方式的读写无差 |
文本文件和二进制文件2
最新推荐文章于 2023-09-23 09:15:17 发布
文本文件和二进制文件2
2008-10-23 17:16