文本流和二进制流
发布日期:2021-06-29 04:57:01
浏览次数:2
分类:技术文章
本文共 1591 字,大约阅读时间需要 5 分钟。
1、C中引入流的概念,将数据的数据的输入输出看作是数据的流入和流出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可看作是数据流的源和目的。抽象为一种流,更有利于编程,具体涉及数据流的输入输出可用作各种对象。
2、在C中流可分为两类,文本流和二进制流。计算机的存储在物理上是二进制的,文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。
2、1文本流指的是在流动中的数据是以字符形式出现的。在文本流中,'\n'被换成回车和换行的0DH和0AH。当输出时,则0DH和0AH本换成'\n'。
2、2二进制流的流动的是二进制序列,若流中有字符,则由一个字节的二进制ASCII码表示,若是数字则用一个字节的二进制数字表示。在流入流出时,对\n符号不进行转换。
2、3例如2001这个数,在文本流中用其ASCII码表示为:
'2' '0' '0' '1'
| | | | 50 48 48 49 共占4字节。而在二进制流中则表示为:00000111 11010001 用十六进制就是07D1。只占两字节。由此看出,二进制流比文本流节省空间,且不用进行对\n的转换,这样可以大大加快流的速度,提高效率。因而,对于含有大量数字信息的数字流,可以采用二进制流的方式;对于含有大量字符信息的流,则采用文本流的方式。3、读文本内容然后打印出来
FILE *openfile(char *p,char *m)
{ char buf[256]; FILE *f; /*printf("%s 文件",p); if(gets(buf)==NULL) { fprintf(stderr,"丢失了%s文件名。\n",p); exit(EXIT_FAILURE); }*/ if(strcmp(p,"输入")==0) { strcpy(buf,"C:\\Users\\acer\\Desktop\\test1.txt"); } else if(strcmp(p,"输出")==0) { strcpy(buf,"C:\\Users\\acer\\Desktop\\test2.txt"); } else { fprintf(stderr,"丢失了%s文件名。\n",p); exit(EXIT_FAILURE); } if((f=fopen(buf,m))==NULL) { perror(buf); exit(EXIT_FAILURE); } return f; } int fun(int value); int main(int argc,char **argv) { char buffer[512]; FILE *input; input=openfile("输入","r"); while(fgets(buffer,512,input)!=NULL) { int age[10]; int members; int sum; int i; members=sscanf(buffer,"%d %d %d %d %d %d %d %d %d %d", age,age+1,age+2,age+3,age+4,age+5,age+6,age+7,age+8,age+9); if(members==0) continue; sum=0; for(i=0;i<members;i+=1) sum+=age[i]; printf("%5.2f :%s",(double)sum/members,buffer); } fclose(input); return EXIT_SUCCESS; }转载地址:https://blog.csdn.net/zhang_yin_liang/article/details/52371847 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月22日 07时04分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在Apache下配置多个虚拟主机站点
2019-04-29
Apache中目录权限访问控制配置
2019-04-29
Apache的认证和授权配置
2019-04-29
【学习笔记】Linux下CPU性能评估
2019-04-29
【学习笔记】Linux下内存性能评估
2019-04-29
【学习笔记】Linux下磁盘IO性能评估
2019-04-29
【学习笔记】Mysql中通过profiling定位query性能瓶颈
2019-04-29
2011年网上购书清单
2019-04-29
质量管理专家——戴明的14点说
2019-04-29
python
2019-04-29
网络协议
2019-04-29
进程和线程
2019-04-29
sql面试题
2019-04-29
linux基础与调优
2019-04-29
软件缺陷基础
2019-04-29
软件测试-面试13问
2019-04-29
记一次django项目的部署
2019-04-29
测试项目调研
2019-04-29
接手软件测试新项目的流程
2019-04-29
jmeter-性能测试2-脚本录制开发
2019-04-29