文本流和二进制流

原创 2016年08月30日 18:15:32

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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

linux下文本读写:面向二进制字节流方式

第一步:先创建并写入文字到文件中。 示例代码如下:write.c #include #include #include #include #include int main() { ...
  • u010629326
  • u010629326
  • 2016年02月28日 04:15
  • 1094

python实现文本文件转二进制文件(二进制序列化)

python 将文本文件转换成二进制文件 C++进行读取
  • wh357589873
  • wh357589873
  • 2016年06月17日 15:51
  • 3549

android 二进制流保存为bmp文件

博文转自http://blog.csdn.net/zhaokaidong3/article/details/7776238, 另外要补充的是:不同的图片读取像素可能不同,要根据自己需要的像素进行提取...
  • wulazula
  • wulazula
  • 2016年05月07日 13:39
  • 1642

C语言中的文本流与二进制流的区别

近期看到了文本流和二进制流的区别,书上讲的比较含糊,理解不透彻,于是细细琢磨了下,把心得跟大家分享一下: 一、首先回答,什么是文件,流   一个文件通常就是磁盘上的一段命名的存储区。比如 stdio....
  • u011620352
  • u011620352
  • 2015年08月30日 17:07
  • 543

二进制流和文本流区别C

转自:http://blog.sina.com.cn/s/blog_5b2d79e90100h9ph.html 在C中引入了流(stream)的概念。它将数据的输入输出看作是数据的流入和流出,这...
  • barryCG
  • barryCG
  • 2012年05月31日 19:27
  • 13309

C语言中的文本流与二进制流的区别(一)

一、文本文件与二进制文件的定义   大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。   简单来说,文本文件是基于字...
  • wangxiaoqin00007
  • wangxiaoqin00007
  • 2011年07月21日 09:53
  • 696

C语言中的文本流与二进制流的区别(转)

 C语言中的文本流与二进制流的区别 http://blog.sina.com.cn/s/blog_5b2d79e90100h9ph.html在C中引入了流(stream)的概念。它将数据的输入输出看作...
  • hbxtght
  • hbxtght
  • 2011年01月03日 18:10
  • 1404

文本流和二进制流

我们在写C程序的时候经常会涉及到对流的操作,比如说从标准输入流读取一串字符串,然后通过标准输出流输出显示在屏幕上,这也就是所谓的IO操作。那么流究竟是什么东西?下面首先对流这个概念做一下解释。 一....
  • imgodor
  • imgodor
  • 2014年12月16日 23:07
  • 342

C文本流、二进制流的区别

一、文本文件与二进制文件的定义    大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。     简单来说,文...
  • B_H_L
  • B_H_L
  • 2012年07月16日 10:10
  • 2352

二进制流和文本流区别(C语音)

转自:http://blog.csdn.net/barrycg/article/details/7621097 在C中引入了流(stream)的概念。它将数据的输入输出看作是数据的流...
  • scutEdward
  • scutEdward
  • 2014年12月18日 11:52
  • 552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文本流和二进制流
举报原因:
原因补充:

(最多只允许输入30个字)