防止用户输入不正确的数据类型
问题描述:
我试图在我的c程序中只扫描允许的类型。 我有一个整数变量。我想再次扫描,而用户输入是字符。防止用户输入不正确的数据类型
int usercount;
do{
printf("enter user count");
scanf("%d",&usercount);
}
while(!isdigit(usercount));
但是,当输入是字符它是在一个无限循环。任何人都可以帮助吗?
答
scanf()
函数有一个返回值。它会告诉你有多少“转换”成功。在这种情况下,如果未能将输入解释为整数,它将返回0。你的代码应该检查返回值。
通常,以与“东西”留在缓冲的输入队列较不敏感,应在与fgets()
一次读取一个完整的行,然后使用sscanf()
(或任何其它解析功能,如strtoul()
)来解析数据。
成千上万的重复在这个网站上。到处搜索。答案应该包含'fgets',它应该告诉你放弃输入操作的结果。 –
[http://c-faq.com/stdio/scanfprobs.html](http://c-faq.com/stdio/scanfprobs.html) – potrzebie