我正在收到用户输入,我想确定用户是否输入了字母,整数或运算符。我可以使用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
}
}
}
答案 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
语句(true
或false
)中。
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
}