C 在输入验证中使用

C 在输入验证中使用,c,linux,programming-languages,typeof,C,Linux,Programming Languages,Typeof,我们可以在Linux平台上运行的C程序中使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 如果我们不能,那么除了正则表达式之外,还有其他方法可以实现同样的功能吗?“typeof”纯粹是一个编译时指令。它不能用于“输入验证” 输入验证规则可能很复杂。在C语言中,标准C库中的工具非常糟糕,这使得它们变得更加复杂。一个例子是atoi(),如果传入的字符串开头不包含数字(atoi(“hello world”

我们可以在Linux平台上运行的C程序中使用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

如果我们不能,那么除了正则表达式之外,还有其他方法可以实现同样的功能吗?

“typeof”纯粹是一个编译时指令。它不能用于“输入验证”

输入验证规则可能很复杂。在C语言中,标准C库中的工具非常糟糕,这使得它们变得更加复杂。一个例子是atoi(),如果传入的字符串开头不包含数字(atoi(“hello world”)==0),它将返回0,“1337isanumber”将实际返回1337。为了简单地验证某个数字是否是数字,您可以(假设是ASCII而不是Unicode)使用循环,并确保每个值直到第一个空终止符(或为字符串分配的内存大小)都是数字。可以执行类似的过程来检查某些内容是否为字母数字等。正如您所提到的,regex可以用于电话号码或其他相对复杂的数据格式


下面的注释引用了Java中的“instanceof”进行输入验证,但这也不可能。如果您从命令行、查询字符串参数或其他任何地方获得用户输入,它实际上是作为字符串输入的。如果您使用Scanner对象扫描标准输入并使用nextInt()等方法,那么它实际上是在将字符串(从流)转换为某些内容,这可能会引发运行时异常。不能使用instanceof来确定字符串的内容;字符串是字符串——即使其内容是“42”,它也不是整数的实例

谢谢你抽出时间。验证用户输入,例如,用户只能输入数字或用户只能输入字符串而不能输入数字等。。我曾想过使用typeof检查输入的数据类型与有效的数据类型。有点类似于java中的instanceof运算符。
strtol
可以帮助进行数字健全性检查。