1

我正在获取用户输入,并且我想确定用户是否输入了字母、整数或运算符。我可以使用 sscanf 成功确定它是否是一个整数,但我很难确定它是否是一个字母。

通过字母,我的意思是:AZ,az。

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

2 回答 2

7

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

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

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

  • int islower ( int c );检查是否c小写字母az
  • int isupper ( int c );检查是否c大写字母AZ

根据结果​​将它们放入执行某些操作(或)的if语句中。truefalse

PS您可以在此处找到有关标准库的更多信息:字符处理函数:ctype.h

于 2013-11-10T23:41:30.493 回答
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 
     }
于 2013-11-10T23:38:31.717 回答