我需要检查用户是否在scanf()中输入了一个整数(在C中)。我有这段代码:
do {
srs = scanf("%d", &x);
} while (!srs);
如果我输入一个数字,它会继续使用该程序,但如果我输入一个字符,它只会再次要求我输入。但是,如果我这样输入一个正确的整数,它就不会破坏循环。
答案 0 :(得分:1)
如果不先输入数字,它会在输入流上留下非数字字符,以便下次接听电话。所以你进入了一个无限循环。
您应该使用fgets
来读取整行输入,然后使用sscanf
输入行。
do {
char line[512];
fgets(line,512,stdin);
srs = sscanf(line,"%d", &x);
} while (!srs);