如何检查字符串是否为c中的字母(a-z或A-Z)

时间:2013-11-10 23:36:14

标签: c char uppercase lowercase ctype

我正在收到用户输入,我想确定用户是否输入了字母,整数或运算符。我可以使用sscanf成功确定它是否是一个整数,但我很难知道如何确定它是否是一个字母。

信中,我的意思是:A-Z,a-z。

int main(){
    char buffer[20];
    int integer; 
    printf("Enter expression: ");
    while (fgets(buffer, sizeof(buffer), stdin) != NULL){
        char *p = strchr(buffer, '\n'); //take care of the new line from fgets
        if (p) *p = 0;

        //Buffer will either be a integer, an operator, or a variable (letter).
        //I would like a way to check if it is a letter
        //I am aware of isalpha() but that requires a char and buffer is a string

         //Here is how I am checking if it is an integer
         if (sscanf(buffer, "%d", &integer) != 0){
             printf("Got an integer\n");
         }
         else if (check if letter)
             // need help figuring this out
         } 
         else{
             // must be an operator
         }
    }
}

2 个答案:

答案 0 :(得分:7)

要确定输入是一个字母还是一个数字

  • int isalpha ( int c );函数验证c是否为字母
  • int isalnum ( int c );函数验证c十进制数字还是大写或小写字母
  • int isdigit ( int c );函数验证c是否为十进制数字

要确定该字母是大写还是小写

  • int islower ( int c );检查c 是否为小写字母 a-z
  • int isupper ( int c );检查c 是否为大写字母 A-Z

根据结果,将它们放入if语句(truefalse)中。

PS 您可以在此处找到有关标准库的更多信息:Character handling functions: ctype.h

答案 1 :(得分:5)

您可以使用isalpha()isdigit()标准功能。只需加入<ctype.h>

     if (isdigit(integer)) != 0){
         printf("Got an integer\n");
     }
     else if (isalpha(integer))
         printf"Got a char\n"); 
     } 
     else{
         // must be an operator 
     }