防止用户输入不正确的数据类型

问题描述:

我试图在我的c程序中只扫描允许的类型。 我有一个整数变量。我想再次扫描,而用户输入是字符。防止用户输入不正确的数据类型

int usercount; 

    do{ 
    printf("enter user count"); 
    scanf("%d",&usercount); 
    } 
    while(!isdigit(usercount)); 

但是,当输入是字符它是在一个无限循环。任何人都可以帮助吗?

+0

成千上万的重复在这个网站上。到处搜索。答案应该包含'fgets',它应该告诉你放弃输入操作的结果。 –

+0

[http://c-faq.com/stdio/scanfprobs.html](http://c-faq.com/stdio/scanfprobs.html) – potrzebie

scanf()函数有一个返回值。它会告诉你有多少“转换”成功。在这种情况下,如果未能将输入解释为整数,它将返回0。你的代码应该检查返回值。

通常,以与“东西”留在缓冲的输入队列较不敏感,应在与fgets()一次读取一个完整的行,然后使用sscanf()(或任何其它解析功能,如strtoul())来解析数据。