限定输入的方式
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main() {
int a;
printf("请输入一个数字:\n");
while (scanf("%d", &a) != 1) {
getchar();
printf("输入内容非法,请重新输入!\n 重新输入的内容是:");
}
printf("%d",a);
}
scanf
的返回值是int
类型的数据,如果scanf
中的数据被成功放入a
中,那么就返回1
;- 如果
scanf
中的数据不能成功放入a
中,返回值就为0
; - 因此,
scanf
的数据类型规定是“%d”
,如果输入一个字符型的数据'h'
,那么就不会被装入a
中,因此scanf
的返回值是0
,因此会执行while
循环 while
循环中的getchar
语句是消耗掉scanf
中的内容,就可以重新通过键盘将新的数据输入到scanf
中,如果不使用getchar
语句,则上一个循环中的输入数据不会被消耗,导致程序无法继续执行下去。