防止用户输入错误的数据类型

时间:2012-12-02 11:15:39

标签: c scanf

我试图在我的c程序中只扫描允许的类型。 我有一个整数变量。我希望在用户输入为字符时再次扫描。

   int usercount;

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

但是当输入为char时,它处于无限循环中。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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

一般情况下,为了对缓冲输入队列中剩下的“东西”不那么敏感,你应该一次用fgets()读一个完整的行,然后使用sscanf()(或任何其他解析函数,如strtoul())来解析数据。