Использование функции isupper - PullRequest
0 голосов
/ 22 января 2020

Я хочу получить ввод в нижнем регистре, распечатать версию в верхнем регистре

char input;
do {
scnaf("%c", &input);
} while (input < 97 || input > 122);
printf("%c", toupper(input));

Однако это не работает, когда я заменяю оператор while на Функция isupper выглядит следующим образом:

char input;
do {
    scanf("%c", &input);
} while (isupper(input));
printf("%c", toupper(input));

Может кто-нибудь объяснить проблему? "

1 Ответ

0 голосов
/ 22 января 2020

Код while (input < 97 || input > 122); говорит о продолжении l oop, в то время как input меньше 97 (ASCII 'a') или больше 122 (ASCII 'z'). Таким образом, когда используется ASCII, он продолжает l oop, пока input не является строчной буквой.

В отличие от этого, код while (isupper(input)) говорит, что продолжать l oop пока input - заглавная буква. Это неправильный тест для «Я хочу получить ввод в нижнем регистре». Чтобы получить ввод в нижнем регистре, используйте while (!islower(input)), что говорит о продолжении l oop, пока input не является строчной буквой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...