Помощь в написании программы на Си

Задание "Ввести строку, вывести ее пословно". Я понимаю, что сначала нужно сделать проверку на слово, т.е, пока программа в слове она идет дальше, и как только она заканчивается, то выводит это слово, но я не до конца понимаю как сделать эту проверку

введите сюда код#include <stdio.h>

int main() {

int inw = 0, i = 0;
char s[10000];
printf("Print string (max 10000 sb):\n");
fgets(&s, 10000, stdin);
while (s[i] != 0)
{
    if (s[i] != ' ' && s[i] != '\t')
    {
        inw = 1;
    }
    else
    {
        inw = 0;
    }   
    printf("%c", s[i]);
}
return 0;

}


Ответы (1 шт):

Автор решения: Sergey Tatarincev

Два варианта в одном. Одновременно производится вывод посимвольно, и накапливается в временную переменную, откуда выводится слово целиком

#include <stdio.h>

int main()
{
char s[10000];
char myword[10000];
printf("Print string (max 10000 sb):\n");
fgets(&s, 10000, stdin);
int i=0;int wi=0;
while (s[i]!='\0')
{
   switch(s[i]){
     case '\t':  // если '\t' или ' '(до break)
     case ' ': myword[wi+1] ='\0'; // если пробел то в переменную надо дописать конец строки
               printf("\nword at once: %s\n", myword); //вывод слова целиком
               wi=0;i++; // счетчик в исходной строке надо увеличить, а счетчик временной переменной сбросить
               break;

     default: printf("_%c",s[i]);  // если любая отличная от пробела и таба, выводим слово посимвольно
              myword[wi]=s[i]; // накапливаем буковки во временную переменную 
              i++;wi++;  // увеличиваем счетчики
              break;
   }
}
    if(wi){ // если в счетчике wi что-то больше 0 (т.е. есть не выведенные буковки, то завершаем последнюю строку 
        myword[wi+1] ='\0';
        printf("%s\n", myword);
    }
return 0;
    
}
→ Ссылка