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

标签 c scanf

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

   int usercount;

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

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

最佳答案

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

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

关于c - 防止用户输入错误的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668724/

相关文章:

c++ - 计算内存消耗

c - 读取包含单词的 txt 文件的行

C - 在输入流中分隔字符串

c - 在c中扫描单个字符

c - fscanf 格式说明符到结构

c - 这个多空指针函数是如何工作的?

c - 英特尔数组符号 vector 运算

c++ - TRUE 和 FALSE 宏的奇怪定义

c++ - 如何在 C++ 中使用 scanf() 读取字符串?

c - 空格分隔的整数到数组