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
}
}
}
You can use the
isalpha()
andisdigit()
standard functions. Just include<ctype.h>
.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-ZPut them into
if
statements which do something (true
orfalse
), depending on the result.PS You can find out more about standard library here: Character handling functions: ctype.h