c - 检查 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);
为什么会这样,有人知道解决方法吗?
非常感谢大家。
解决方案
您还没有编写任何代码来读取非整数。因此,每次您尝试读取整数时,都会失败。如果你想从用户那里读取一行输入并解析它以查看它是否是一个有效的整数,请编写读取一行输入的代码。
推荐阅读
- ios - Phonegap 需要 IOS 密钥
- matlab - Julia vs. MATLAB - 距离矩阵 - 运行时测试
- python - 使用 Keras 的简单线性回归
- wordpress - WP如何显示他“2个月前”发表的帖子
- android - 是否在 uploadTask.addOnSuccessListener 中声明了 StorageReference.getDownloadUrl()?
- powershell - 删除跨不同订阅的一组用户的 Azure 角色分配
- sql-server - 尝试创建存储过程时出错
- php - 函数调用中需要身份验证的 PHP SOAP 客户端
- linux - func (N) 在手册页中是什么意思?
- python - 从运行 Python 脚本的批处理文件中读取输出