第八章 字符输入/输出和输入确认

来源:互联网 发布:泰州淘宝美工培训学校 编辑:程序博客网 时间:2024/05/14 16:17

1.非缓冲输入:输入字符立即回显。

2.

缓冲输入:延迟回显。

缓冲输入分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O。对完全缓冲来说,缓冲区填满时被清空(内容被发送至其目的地),这种类型的缓冲通常出现在文件输入中。缓冲区的大小取决于系统,但512和4096字节是常见的值。对行缓冲来说,遇到一个换行字符时被清空缓冲区。键盘输入是标准的行缓冲,按下回车键清空缓冲区。


3.文件是一块存储信息的存储器区域。C程序处理一个流而不是直接处理文件。流是yield理想化的数据流,实际输入或输出映射到这个数据流。键盘和显示设备作为每个C程序自动打开的文件来对待。键盘输入由一个被称为stdin的流表示,输出则由stdout的流表示。

4.

操作系统对文件结尾检测:

a)有内嵌的Ctrl+Z字符来标识文件结尾。

b)让操作系统存储文件大小的信息。

C的处理方法是让getchar()在到达文件尾时返回一个特殊的值(EOF,end of file,通常为-1,stdio.h中定义),而不去管操作系统是如何监测的。getchar()本身的类型实际上是int,声明char也是可以的。对putchar没有影响。在UNIX上,输入Ctrl+D会导致传送文件尾信号。

5.

输入重定向:<;

输出重定向:>;

追加添加:>>;

管道运算符(将一个程序的输出与第二个程序的输入连接起来):|;

组合重定向的规则:

a)只能用于数据文件和可执行文件连接。不能用于一个数据文件与另一个数据文件或者一个可执行程序与另一个。

b)输入不能来自一个以上;输出不能来自一个以上。

c)空格不是必须的。

6.混合使用scanf()和getchar()函数,那么在调用getchar()之前scanf()恰好在输入中留下一个换行符时,将会产生问题。然而,如果知道这个问题,就可以在编程中解决。

解决方法:

#include<stdio.h>int main(){int ch;char c;scanf("%c",&c);printf("%c\n",c);while((ch=getchar())!= '\n')//吃掉遗留在缓存的'\n'    continue;ch=getchar();putchar(ch);return 0;}



0 0
原创粉丝点击