首页 > 解决方案 > 检查 scanf 的返回值时的无限循环

问题描述

下面的代码会产生无限循环。它正在检查用户是否为输入提供了一个整数,如果没有,那么它应该执行另一个循环迭代以再次询问。发生的是它提示用户,如果用户没有输入整数,则循环无限期地运行,而无需再次询问用户新的整数。我会期待它,但这不是它正在做的事情。

   int arrowBaseHeight = 0;
   int arrowBaseWidth = 0;
   int arrowHeadWidth = 0;
   int rc = 0; //Return code of user input
   
   do {

      printf("Enter arrow base height greater than 1:\n");
      rc = scanf("%d", &arrowBaseHeight);

   } while (arrowBaseHeight < 1 || rc == 0);

为什么会这样,有人知道解决方法吗?

非常感谢大家。

标签: c

解决方案


您还没有编写任何代码来读取非整数。因此,每次您尝试读取整数时,都会失败。如果你想从用户那里读取一行输入并解析它以查看它是否是一个有效的整数,请编写读取一行输入的代码。


推荐阅读