C 语言控制台程序清除输入缓冲区
编写 C 语言控制台程序时,如果使用 scanf()
函数作为输入,往往需要解决非法输入的问题。比如以下情况:1
2
3printf("输入一个0~9的整数a\n");
int a;
scanf("%d", &a);
此时可能出现如下几种典型的非法输入:
- 123
- 123xyz
- xyz123
对于第一种,使用 if 判断 a 的范围是否满足要求即可。第二种和第三种则较为复杂,因为其中涉及到了字符的输入。第二种情况,scanf()
会将 123 存入 a,而 xyz 留在了输入缓冲区;第三种情况,scanf()
不会读取任何数据,xyz123 都留在了输入缓冲区。
如果只是判断这一次输入的合法性,可以利用 scanf()
的返回值。如果输入有效,scanf()
会返回 1,否则返回 0。由此可以排除 scanf()
无法读取的输入。