【发布时间】:2014-05-16 17:53:53
【问题描述】:
谁能告诉我检查输入类型的最佳方法是什么?例如,如果我要求某人输入他们的姓名,我想确保他们不输入数字。或者当我询问他们的年龄时,我不希望字母被估算。我尝试过使用 switch 语句,但这似乎不是一个好主意。
【问题讨论】:
-
到目前为止你尝试过什么?输入是 C 字符串的形式吗?你有可用的“正则表达式”库吗?这将是最简单的检查方法。否则,您必须逐个字符地检查字符串并检查 isalpha()、isdigit() 等。
-
使用
isdigit和isalpha等函数来测试一个字符是数字还是字母。 -
sscanf()想法:char buf[100]; fgets(buf, sizeof buf, stdin); int n = -1; sscanf(buf, " %*[A-Za-z ]%*[\n]%n", &n); if (n > 0 && buf[n] == '\0') GoodName(); -
最好使用
strtol()函数族来测试数字输入。 -
在编写更多操作名称的代码之前,您可能会考虑阅读kalzumeus.com/2010/06/17/…。