我是C的新手,我正在写一个“检查器”代码。它基本上会读取输入,然后逐个检查输入是否由字母组成,或者是否存在数字或坏字符($%^& *)。
因此,假设我输入"$#@$#%^"
并要求此程序进行检查,它将打印bad input detected
。如果我输入ASDFASDFASDF
,则会打印no bad input detected
。
我可以想到bad
这样做的方法,因为它实际上是硬编码的。它看起来像这样:
假设:所有输入字符都将处于大写
int badIntCheck(char c) {
switch (c) {
case 'A': return 0;
case 'B': return 0;
case 'C': return 0;
............ // continues till 'Z'
default : return 1;
}
}
//then followed by
for (i = 0; i < strlen(inputMe)-1; i++) {
if (badIntCheck(inputMe[i]) == 1) {
printf ("bad input detected!")
}
}
这几行代码正在运行,但我感觉不到effective and efficient
。所以我决定创建一个简短的代码,但它似乎没有用。它看起来像这样:
for (i = 0; i < strlen(inputMe)-1; i++ ) {
int var = inputMe[i];
if (isalpha(var) == 0) {
error ("bad input detected!");
}
}
这个简短的for
循环有问题吗?如果我只使用可以检测参数是否为字母的isalpha()
函数的帮助,我发现它更有效。
任何人都可以提出建议或输入为什么这不起作用?谢谢。