当用户在scanf()中输入错误的数据类型时,如何解决无限循环?

杰森96

C初学者在这里。对于下面的程序,每当用户输入字符或字符串时,就会进入无限循环。在仍然使用scanf的情况下如何解决此问题?与使用scanf相比,编写此程序的更好方法是什么?感谢那些会回答的人。

#include <stdio.h>
#include <ctype.h>

int main() {

int rounds = 5;

do {
printf("Preferred number of rounds per game. ENTER NUMBERS ONLY: ");
scanf("%d", &rounds);   
} while(isdigit(rounds) == 0);

return 0;   
}
史蒂夫·萨米特(Steve Summit)

我会说只有两个“修复程序”。

  1. 保留scanf通话,疣和所有通话。scanf需要数字时,请小心不要输入非数字。

  2. 放弃scanf并使用其他东西。我们刚刚在这个新问题上讨论了这种策略

使用scanf完后,总是很想尝试“修复”它,因此这里可能潜藏着第三个答案,解释了如何在仍在使用时做得更好,更友好,更容错的输入scanf但是,我认为这是一个傻瓜的事,是在浪费时间。scanf许多缺陷的简单,明显的修复方法本身并不完善,并且还有其他缺陷。scanf改写不使用的程序相比,您可能花费更多的时间来尝试修复正在使用的程序scanf,并且scanf无论如何,使用不改写将获得总体上更好的结果(更不用说更干净的程序了)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

输入错误的数据类型并帮助评估我的代码时的C ++初学者无限循环

角度如何解决无限递归?

如何解决无限的readLine而

如何解决此数据类型错误?

在 SQL Server 中使用 unpivot 时如何解决数据类型长度差异错误?

如何解决无法散列的类型:“列表”错误

如何解决React.js中的无限循环错误?

如何解决 C# linq 中的转换数据类型错误

在Umbraco 7.1.8中使用SurfaceController时如何解决无路由错误?

当用户输入字符而不是数字时 C 中的无限循环

值相等和循环引用:如何解决无限递归?

在构建动态查询时,显示将数据类型 varchar 转换为 float 的错误 - 如何解决?

如何解决MS Access 2010中的“条件表达式中的数据类型不匹配”错误?

Android的TensorFlow精简版翻译:如何解决“数据类型错误:无法解析java.lang.Float中的数据类型”

努力解决无限循环

在 for 循环中运行 scanf 时出现逻辑错误,我该如何解决?

当用户在循环内的任何输入中输入-1时如何停止Java程序?

如何解决此错误:转换nvarchar值“字符串或二进制数据将被截断”时转换失败。转换为int数据类型

使用“打印”时如何解决无效的语法错误?

在 Python Flask 应用程序中使用外部 API 时如何解决无返回错误?

如何解决“无法转换'(CGFloat)->数据类型的值?” 此代码的预期参数类型为“数据””错误?

如何解决“添加操作符中的数据类型datetime和uniqueidentifier不兼容。”

如何解决Pojo中字符串/日期字段数据类型转换的问题?

如何解决 JPA 中“非法使用 LONG 数据类型”的问题

如何解决 SQL Server 中的数据类型不兼容问题

R:如何解决无效的下标类型“列表”

如何解决EKEventStore上的requestAccess(to:completion :)中的无限循环?

如何解决无法读取 React js 中未定义错误的属性“map”?

如何解决无卡开发者密钥错误