问题
I am getting user input, and I want to determine if the user has entered a letter , an integer, or an operator. I can successfully determine if it is an integer using sscanf, but I am stumped on how to determine if it is a letter.
By letter, I mean: 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
}
}
}
回答1:
You can use the isalpha()
and isdigit()
standard functions. Just include <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
}
回答2:
To find out if the input is a letter or a digit:
int isalpha ( int c );
function to verify whetherc
is an alphabetic letter.int isalnum ( int c );
function to verify whetherc
is either a decimal digit or an uppercase or lowercase letter.int isdigit ( int c );
function to verify whetherc
is a decimal digit character.
To find out if the letter is uppercase or lowercase:
int islower ( int c );
to checks whetherc
is a lowercase letter: a-zint isupper ( int c );
to checks whetherc
is a uppercase letter: A-Z
Put them into if
statements which do something (true
or false
), depending on the result.
PS You can find out more about standard library here: Character handling functions: ctype.h
来源:https://stackoverflow.com/questions/19896645/how-to-check-if-a-string-is-a-lettera-z-or-a-z-in-c