#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` изменяет строку "на месте". Убедись, что ты передаёшь в неё именно ту строку, которую хочешь изменить (последнюю считанную, а не все предыдущие).