在线编译器 C

#include <stdio.h> void to_upper(char *str) { while (*str) { if (*str >= 'a' && *str <= 'z') { *str &= ~0x20; // Сбрасываем 6-й бит, чтобы перевести букву в верхний регистр } str++; // Переходим к следующему символу } } int main (void) { char character[100]; do { fgets(character, sizeof(character), stdin); } while (*character != '.'); // пока введенный символ не точка to_upper(character); printf("%s\n", character); return 0; }
1) Этот код считывает строки с помощью `fgets` в цикле до тех пор, пока первым символом введённой строки не будет точка. Затем он переводит все строчные буквы в последней считанной строке в заглавные и выводит её.

2) Обрати внимание, что цикл `do-while` завершится, даже если точка будет введена не в начале строки, а после других символов. Проверяется только первый символ.
   Подсказка: функция `to_upper` изменяет строку "на месте". Убедись, что ты передаёшь в неё именно ту строку, которую хочешь изменить (последнюю считанную, а не все предыдущие).