2011-09-20 58 views
0

当用C接受命令行参数,是否有任何方式,以确保字符串只包含字母(即,没有字母数字或符号)而不转换为int?有没有内置的功能呢?检查在C字符串某些字符

int 
main(int argc, char *argv[]) 
{ 

    char *input = argv[1]; 
    if (/* input contains anything but upper and lowercase letters */) 
     return 1; 
    ... 
} 
+0

*只有字母(即,没有字母或符号)*这是否有意义?你的意思是*没有字母**和**符号*? – alex

+3

什么是'string'用C? – Jacob

+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()(字母数字),而不是仅仅alphabetics;你可以用islower()isupper()更精确。等

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; 
}