博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C输入缓冲与重定向
阅读量:6909 次
发布时间:2019-06-27

本文共 1034 字,大约阅读时间需要 3 分钟。

输入缓冲:

先来看一个回显小程序echo,它把用户输入的字符显示到屏幕上

//echo.c #include
int main(){ int ch; while((ch=getchar())!=EOF) { putchar(ch); }}

运行结果如下(按ctrl+d 退出循环,程序结束)

这个程序在不同系统上还有一个可能的结果是

hheelloo

这一般是例外情况,在大多数系统上,在按下回车之前什么都不会发生,正如第一种结果所示。

输入字符立即回显非缓冲(unbuffered)直接(direct)输入的一种实例,它表示输入的字符对正在等待的程序立即变为可用。

反之,延迟回显的是缓冲(buffered)输入的实例,这种情况下所输入的字符被收集并存储在一个被称为缓冲区(buffer)的临时存储区域当中,当按下回车时所输入的字符块对程序变为可用,于是便一起显示到了屏幕上。

缓冲区的作用:

  1.将若干个字符作为一个块传输比逐个发送这些字符的耗时少

  2.如果输入有误,可用使用delete键进行修改

非缓冲输入的适用性:一些交互式程序,希望按下键就执行某个命令

 

缓冲又可以分为两类:

  完全缓冲I/O:缓冲区满时被清空(内容被发送至其他目的地),这类缓冲通常出现在文件输入中

  行缓冲I/O:遇到换行符时清空缓冲区,键盘是标准的行缓冲,按下回车键将清空缓冲区

 

重定向:

  默认情况下使用标准IO包的C程序将标准输入作为其输入流,这个流是作为向计算机中读取数据的常规方式建立的,现在一般是我们的键盘。同理标准输出流一般是我们的显示器。

  然而我们可以将标准输入输出流重定向分配至文件

 

  现在用mywords文件(随便建的一个文件,输入了一些字符)代替键盘作为我们的输入使用echo

  

  果然echo程序把mywords中的内容显示出来了

  <符号是Unix、Linux、DOS的重定向运算符,该运算符把mywords文件和标准输入流关联了起来,将该文件的内容引导至echo程序。

  同理也可以使用>符号实现输出流重定向到文件

  

  可以看到程序把我们从键盘输入的字符串输出到了myword当中,而不是回显在屏幕上了

 

 

参考:C primer plus

 

转载于:https://www.cnblogs.com/Zhang-Shangyu/p/5327518.html

你可能感兴趣的文章
【Java例题】3.5 级数之和
查看>>
silverlight多国语言研究
查看>>
开发--省级三联动,简单的代码,但是功能不差
查看>>
赋值法
查看>>
单词积累(Unity)
查看>>
P4769 [NOI2018]冒泡排序(dp)
查看>>
[BZOJ5407]girls
查看>>
API接口 Http和Socket 优劣比较 使用场景选择
查看>>
js 邮政编码验证
查看>>
iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调
查看>>
HDU 4532 湫秋系列故事——安排座位(组合)
查看>>
BZOJ 3672 [Noi2014]购票 (熟练剖分+凸壳维护)
查看>>
LINQ扩展实现去重复
查看>>
Linq to entity优化---MSDN
查看>>
多种方式实现依赖注入
查看>>
20150625_Andriod_01_ListView1_条目显示
查看>>
jmeter线程组之间传递参数
查看>>
monkey测试===Monkey测试策略(系列二)转
查看>>
安全测试===如何查看浏览器保存的密码
查看>>
POJ3177 Redundant Paths【双连通分量】
查看>>