输入缓冲:小程序
先来看一个回显小程序echo,它把用户输入的字符显示到屏幕上spa
//echo.c
#include<stdio.h> int main() { int ch; while((ch=getchar())!=EOF) { putchar(ch); } }
运行结果以下(按ctrl+d 退出循环,程序结束)3d
这个程序在不一样系统上还有一个可能的结果是code
hheellooblog
这通常是例外状况,在大多数系统上,在按下回车以前什么都不会发生,正如第一种结果所示。字符串
输入字符当即回显非缓冲(unbuffered)或直接(direct)输入的一种实例,它表示输入的字符对正在等待的程序当即变为可用。get
反之,延迟回显的是缓冲(buffered)输入的实例,这种状况下所输入的字符被收集并存储在一个被称为缓冲区(buffer)的临时存储区域当中,当按下回车时所输入的字符块对程序变为可用,因而便一块儿显示到了屏幕上。io
缓冲区的做用:class
1.将若干个字符做为一个块传输比逐个发送这些字符的耗时少循环
2.若是输入有误,可用使用delete键进行修改
非缓冲输入的适用性:一些交互式程序,但愿按下键就执行某个命令
缓冲又能够分为两类:
彻底缓冲I/O:缓冲区满时被清空(内容被发送至其余目的地),这类缓冲一般出如今文件输入中
行缓冲I/O:遇到换行符时清空缓冲区,键盘是标准的行缓冲,按下回车键将清空缓冲区
重定向:
默认状况下使用标准IO包的C程序将标准输入做为其输入流,这个流是做为向计算机中读取数据的常规方式创建的,如今通常是咱们的键盘。同理标准输出流通常是咱们的显示器。
然而咱们能够将标准输入输出流重定向分配至文件
如今用mywords文件(随便建的一个文件,输入了一些字符)代替键盘做为咱们的输入使用echo
果真echo程序把mywords中的内容显示出来了
<符号是Unix、Linux、DOS的重定向运算符,该运算符把mywords文件和标准输入流关联了起来,将该文件的内容引导至echo程序。
同理也可使用>符号实现输出流重定向到文件
能够看到程序把咱们从键盘输入的字符串输出到了myword当中,而不是回显在屏幕上了
参考:C primer plus