当接受C中的命令行参数时,有没有办法确保字符串只包含字母(即没有字母数字或符号)而不转换为int?是否有内置函数?
int
main(int argc, char *argv[])
{
char *input = argv[1];
if (/* input contains anything but upper and lowercase letters */)
return 1;
...
}
答案 0 :(得分:6)
对于“仅限字母”,请使用isalpha()
中的<ctype.h>
。你必须把它包装成一个函数,当然:
#include <stdbool.h>
#include <ctype.h>
bool all_alpha(const char *str)
{
char c;
while ((c = *str++) != '\0')
if (!isalpha(c))
return false;
return true;
}
请注意isalpha()
将根据当前区域设置返回不同的结果。您可能希望使用isalnum()
(字母数字)而不仅仅是字母;您可以使用islower()
或isupper()
更加精确。等
答案 1 :(得分:0)
只需扫描字符串的每个字符,如果找到的字符不是大写或小写字母,请跳出标记标记的循环。
示例:
#include <stdio.h>
int main (int argc, char *argv[])
{
int i, flag;
for (i=0, flag = 1; argv[1][i] != '\0'; i++)
{
if (!isalpha (toupper (argv[1][i])))
{
flag = 0;
break;
}
}
if (flag == 1)
printf ("\n%s contain only alphabets\n", argv[1]);
else
printf ("\n%s containg other symbols excpet alphabets\n", argv[1]);
return 0;
}