Распечатать каждое слово предложения, меняя его первую букву на прописную - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Словом назовём всякую последовательность букв латинского алфавита длинны не более 20. Предложение - всякую последовательность не более 30 слов, разделенных одним или несколькими пробелами, оканчивающуюся символом "." "!" "?". Написать программу, читающую заданное предложение, контролирующую его правильность и выполняющую функция, которая: Распечатывает каждое слово предложения, меняя его первую букву на прописную, если необходимо. Вот мой вариант кода:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char up(void)
{
    int k = 0;
    int i = 0;
    char str[20];
    while ((str[i] != '.') || (str[i] != '!') || (str[i] != '?') || (k > 30))
    {
        char str[20];
        while (str[i] != ' ')
        {
            gets(str);
        }
        strupr(str[i]);
        printf("%s", str);
        k += 1;
    }
}
void main()
{
    int i, k;
    char str[20];
    printf("Input ur string: ");
    up();
    
}
Программа позволяет ввести строку, однако, не обрабатывает её... Объясните, пожалуйста, в чём у меня ошибка?

Решение задачи: «Распечатать каждое слово предложения, меняя его первую букву на прописную»

textual
Листинг программы
 strupr(str[i]);

Объяснение кода листинга программы

В данном коде используется функция strupr, которая принимает в качестве аргумента строку (предложение) и изменяет первую букву каждого слова в этой строке на прописную. Однако, код не полностью решает задачу, так как он не выводит измененное предложение.

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы