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

Inf*_*ter -2 c

可能重复:
如果用户输入非数字字符,如何仅扫描整数并重复读取?

嗨,我是c的新手,我正在编写一个程序,要求用户输入一个整数,如果它不符合某个范围内的标准,比如lass 20,但大于5.它会询问用户再次输入值.

但是我想知道如果我输入一个角色会发生什么,并且它创造了一个无限循环.

所以我想知道是否有一种方法或特定功能将检查输入的值以查看它是否是正确的数据类型.而且我没有重新塑造用户.

mah*_*mah 5

要解决这种可能性,您必须将输入扫描为文本,然后自行进行完整性测试.

  • “健全性测试”是一个通俗术语,用于确保一些简单、基本的条件成立的测试,例如,当您请求数字时,用户没有输入一串字母。 (2认同)

Mat*_*son 5

许多人尝试过,但到目前为止还没有成功地制造出能控制用户大脑的计算机,以防止用户有时按下错误的(某种)按钮......;)

有两种常用的解决方案可以解决这个问题:

  1. 编写一个直接输入函数,以"无回显"读取,并丢弃[可能显示某些消息]错误输入,以及"知道"什么是有效输入的特定输入函数.

  2. 使用标准函数将输入作为文本字符串读取,然后(尝试)将字符串输入转换/验证为数字或其他.在这里,如果转换/验证失败,则打印一些消息并要求用户再次尝试.