引例:
现象:
用getchar()函数输入字符时,它会将所有的用户输入(包括回车符),都先放入数据缓冲区中。
原因:
它是以行缓冲输入方式,进行输入。
- 相当于一次性把键盘输入的一行字符都放入输入缓冲区(回车键也被放入)
- 然后再从缓冲区逐个读取字符
例:
1. #include <stdio.h>
2. int main()
3. {
4. char ch1, ch2;
5. ch1 = getchar();
6. printf("ch1=%c\n", ch1);
7. ch2 = getchar();
8. printf("ch2=%c\n", ch2);
9. return 0;
10. }
如何修改这个程序使其得到如下的输出结果?
a↙
ch1=a
b↙
ch2=b
有几种处理方法:
1、使用getchar()吸收多余字符;但如果多余字符不止一个且不固定时不适用。在6,7行插入
getchar();
2、使用%*c 吸收多余字符;同上。(抑制字符“ * ”)
3、使用% c (c前有空格),可以吸取多个空格,回车,跳格,相对灵活。