我想让代码运行直到用户输入一个整数值。如何扫描整数?
该代码适用于char和char数组。
我也做了以下内容:
#include<stdio.h>
int main()
{
int n;
printf("Please enter an integer: ");
while(scanf("%d",&n) != 1)
{
printf("Please enter an integer: ");
while(getchar() != '\n');
}
printf("You entered: %d\n",n);
return 0;
}
的问题是,如果用户输入一个浮点值scanf
会接受它。
Please enter an integer: abcd
Please enter an integer: a
Please enter an integer: 5.9
You entered: 5
这怎么可以避免?
这是很相似? http://stackoverflow.com/questions/23610457/how-can-i-distinguish-between-integer-and-character-when-using-scanf – 2014-10-27 08:42:59
它不是'扫描浮动',而是停在第一个非数字。它也会通过输入“5xyzNotAFloatNumber”来做到这一点。 – usr2564301 2014-10-27 08:43:09
所以不能用'scanf'完成?所以一定要使用'fgets'? – user1336087 2014-10-27 08:46:07