Я получаю пользовательский ввод и хочу определить, ввел ли пользователь букву, целое число или оператор. Я могу успешно определить, является ли это целым числом, используя 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
}
}
}
(sscanf(" ", "%d", &integer)
даст -1 и пройдет ваш тест Got a integer\n. Рекомендовать в будущем использовать утвердительныеsscanf()
сравнительные тесты, такие какsscanf(buffer, "%d", &integer) == 1
дляsscanf(..., "%d",...)
, которые могут возвращать 0, 1 или EOF. - person chux - Reinstate Monica   schedule 15.11.2013