Я получаю пользовательский ввод, и я хочу определить, ввел ли пользователь букву, целое число или оператор. Я могу успешно определить, является ли это целым числом с помощью sscanf, но я не понимаю, как определить, является ли это буквой.Как проверить, является ли строка буквой (a-z или A-Z) в c
Под буквой, я имею в виду: 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
}
}
}
BTW: Если вы ввели только пробелы, '(sscanf (»», "% D", & целое число)' даст -1 и _pass_ ваш тест «Got integer \ n». Рекомендуйте в будущем использовать _ подтверждающие_ 'sscanf()' сравнительные тесты, такие как 'sscanf (buffer,"% d ", & integer) == 1' для' sscanf (..., " % d ", ...)' можно ожидать, чтобы возвращать 0, 1 или EOF. – chux