C语言“流”是什么概念
3个回答
推荐于2017-10-02
展开全部
首先理解流的意思,可以想象水从水管里出来,这就是一股水流。
然后,c语言中流动的不再是水,而是有顺序的,有排列结构的数据。比如100001111100001(二进制)
C里的文件流,C里标准文件方式把文件当作流来看,也就是有一个内部缓冲buffer(在C库内部建立,一般为512B),每次以标准方式打开文件时,读入时先将数据读到这个缓冲区里,写的时候也是先写入缓冲区里。
C里标准输入就是stdin,标准输出就是stdout,C对键盘输入(比如scanf)和屏幕输出(比如printf)的行缓冲机制就是建立在这些文件的流机制上的。
有时候比如scanf输入整数时,最后一个回车就会留在流的buffer里。如果下次时你读字符的话就会把它读入。这就是为什么有些C实现允许你用fflush(stdin)来清除输入缓冲,不过C标准只定义了对普通文件和stdout等输出流的fflush行为。因为按理说fflush刷新缓冲不应该丢弃输入的。
然后,c语言中流动的不再是水,而是有顺序的,有排列结构的数据。比如100001111100001(二进制)
C里的文件流,C里标准文件方式把文件当作流来看,也就是有一个内部缓冲buffer(在C库内部建立,一般为512B),每次以标准方式打开文件时,读入时先将数据读到这个缓冲区里,写的时候也是先写入缓冲区里。
C里标准输入就是stdin,标准输出就是stdout,C对键盘输入(比如scanf)和屏幕输出(比如printf)的行缓冲机制就是建立在这些文件的流机制上的。
有时候比如scanf输入整数时,最后一个回车就会留在流的buffer里。如果下次时你读字符的话就会把它读入。这就是为什么有些C实现允许你用fflush(stdin)来清除输入缓冲,不过C标准只定义了对普通文件和stdout等输出流的fflush行为。因为按理说fflush刷新缓冲不应该丢弃输入的。
展开全部
流是磁盘或其它外围设备中存储的数据的源点或终点。”。
这是在《c程序设计语言》上的原话。
据我的理解,流主要是指一种逻辑上的概念,它提供或存储数据。产生数据的叫输入流,消耗数据的叫输出流。至于怎么产生,又怎么消耗,这是一种物理上的实现,根据每种设备有所不同,但c语言中对它们一视同仁,以一个“流”字来概括它们的特征。作为流的使用者来说,不需要关心太多的细节。流的实现保证了它具有它所声明的特性。c语言中对流除了分为i/o流之外,还分为文本流与二进制流。文本流的特点是流由文本行组成,每一行有0个或多个字符并以’\n’字符结束,即它是有一定意义的,以某种字符集的字符组成的一个序列。一个文本流,读入与写出时可能会对其内容作更改,因为它是有一定意义的,系统可以识别并在适当时候解释,比如在输出文本流中碰到’\b’时,系统的操作是将输入流中的前一个字符删除,在终端上显示就是在它前面输出的这个字符被删除了;二进制流则完成是由一些“生”的,未经处理的数据组成的,c语言将它们看成由0与1组成的序列来读与写,所以它们的特性是同一系统中把同一二进制流读入与写出,其内容没有任何变化。
这是在《c程序设计语言》上的原话。
据我的理解,流主要是指一种逻辑上的概念,它提供或存储数据。产生数据的叫输入流,消耗数据的叫输出流。至于怎么产生,又怎么消耗,这是一种物理上的实现,根据每种设备有所不同,但c语言中对它们一视同仁,以一个“流”字来概括它们的特征。作为流的使用者来说,不需要关心太多的细节。流的实现保证了它具有它所声明的特性。c语言中对流除了分为i/o流之外,还分为文本流与二进制流。文本流的特点是流由文本行组成,每一行有0个或多个字符并以’\n’字符结束,即它是有一定意义的,以某种字符集的字符组成的一个序列。一个文本流,读入与写出时可能会对其内容作更改,因为它是有一定意义的,系统可以识别并在适当时候解释,比如在输出文本流中碰到’\b’时,系统的操作是将输入流中的前一个字符删除,在终端上显示就是在它前面输出的这个字符被删除了;二进制流则完成是由一些“生”的,未经处理的数据组成的,c语言将它们看成由0与1组成的序列来读与写,所以它们的特性是同一系统中把同一二进制流读入与写出,其内容没有任何变化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就C程序而言,从程序移进,移出字节,这种字节流就叫做流。程序与数据的交互是以流的形式进行的。进行C语言文件的读写时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询