当用C接受命令行参数,是否有任何方式,以确保字符串只包含字母(即,没有字母数字或符号)而不转换为int?有没有内置的功能呢?检查在C字符串某些字符
int
main(int argc, char *argv[])
{
char *input = argv[1];
if (/* input contains anything but upper and lowercase letters */)
return 1;
...
}
当用C接受命令行参数,是否有任何方式,以确保字符串只包含字母(即,没有字母数字或符号)而不转换为int?有没有内置的功能呢?检查在C字符串某些字符
int
main(int argc, char *argv[])
{
char *input = argv[1];
if (/* input contains anything but upper and lowercase letters */)
return 1;
...
}
对于 '只信',用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()
(字母数字),而不是仅仅alphabetics;你可以用islower()
或isupper()
更精确。等
只需通过所述串的每一字符扫描并如果字符被发现,而这并不是大写或小写字母,中断环路标记的标志出来。
例子:
#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;
}
*只有字母(即,没有字母或符号)*这是否有意义?你的意思是*没有字母**和**符号*? – alex
什么是'string'用C? – Jacob
也许'没有数字或符号'? –