Помощь в написании программы на Си
Задание "Ввести строку, вывести ее пословно". Я понимаю, что сначала нужно сделать проверку на слово, т.е, пока программа в слове она идет дальше, и как только она заканчивается, то выводит это слово, но я не до конца понимаю как сделать эту проверку
введите сюда код#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;
}