检查输入有效字符

时间:2015-11-28 03:17:32

标签: c

我是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()函数的帮助,我发现它更有效。

任何人都可以提出建议或输入为什么这不起作用?谢谢。

0 个答案:

没有答案