Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 防止用户输入不正确的数据类型_C_Scanf - Fatal编程技术网

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

C 防止用户输入不正确的数据类型,c,scanf,C,Scanf,我试图在我的c程序中只扫描允许的类型。 我有一个整数变量。我想在用户输入为字符时再次扫描 int usercount; do{ printf("enter user count"); scanf("%d",&usercount); } while(!isdigit(usercount)); 但是当输入为char时,它处于无限循环中。有人能帮忙吗?函数的scanf()有一个返回值。它告诉您它成功地进行了多少次“转换”。在这种情况下,如果无法将

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

   int usercount;

   do{
     printf("enter user count");
     scanf("%d",&usercount);
   }
   while(!isdigit(usercount));
但是当输入为char时,它处于无限循环中。有人能帮忙吗?

函数的
scanf()
有一个返回值。它告诉您它成功地进行了多少次“转换”。在这种情况下,如果无法将输入解释为整数,它将返回0。代码应该检查返回值


一般来说,为了对缓冲输入队列中的“stuff”不太敏感,您应该使用
fgets()
一次读取一整行,然后使用
sscanf()
(或任何其他解析函数,如
strtoul()
)解析数据。

此站点上有数千个重复项。四处搜索。答案应该包括
fgets
,它应该告诉您放弃输入操作的结果。