c - 在C中读取整数时对字符进行错误检查

标签 c error-checking

在我的编程课上,我编写了一个程序来计算除数之和。所以我已经完成了最后一部分,即错误检查,如果我读入一个字符,我就会遇到问题。我已经在 S.O. 上进行了搜索。早些时候,我们也尝试过解决一些问题,但找不到适用于 100 之前无限负数的解决方案。

当我点击一个字符时,它会将其设置为 0 并直接转到末尾,我希望它在读入后退出

int main (void){
int userIN=0;
int i = 0;
int next = 0;
int temp= 105;
int cycle;
puts("Enter up to 10 integers less than or equal to 100");
while(scanf("%d ", &userIN) !=EOF && (i < 10))
{
  if(userIN > 100){
   printf("Invalid Input\n");
   exit(1);  
  }
  else if(userIN < 100)
  {

感谢您提前提供帮助

编辑:程序正在正确循环,我的问题是对输入的字符进行错误检查,而不是代码本身的任何内容

最佳答案

如果

scanf() 无法读取格式字符串指定的值(例如使用 %d,它遇到像 foo 这样的数据)。你可以检查一下。需要注意的是,它不会从 stdin 读取有问题的数据,因此它仍然会影响 scanf() 的下一次调用 - 这可能会导致无限循环(scanf()报告错误,再次调用scanf(),它遇到相同的输入,因此报告相同的错误)。

您最好使用 fgets() 读取整行输入。然后手动检查输入或使用sscanf()(注意名称中附加的s)。这种方法的优点是更容易避免意外用户输入的无限循环。

关于c - 在C中读取整数时对字符进行错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588815/

相关文章:

java - Java : S to Start and Q to Quit中的错误检查

c - Scanf 函数中的错误

c线程并发和内存混合

c - 对 'clrscr' 的 undefined reference 和 ld 返回 1 退出状态

C:一种更安全的方法来检查函数中的缓冲区并附加到它?

c - c中的阻塞进程

c - 意外空字符导致静态变量在 C 中重置

php - 如何同时对多个 PHP 文件执行错误检查?

FFmpeg 错误检查