Вывод по одному слову на строке - C (СИ)
Формулировка задачи:
Доброго времени суток!
Задача: написать программу, которая печатает содержимое своего ввода, помещая по одному слову на строке.
Написал такой вариант:
Условие в if для тех случаев, когда пробелов или табуляций несколько подряд.
Однако, работает только если пробелов 1 или 2 (подряд).
Помогите разобраться!
#include <stdio.h> main() { int c, p = 0; char n = '\n'; while ( (c = getchar()) != EOF) { if ((c == '\t' || c == ' ') && ( p == 0)) /* печатаем \n только если счетчик на нуле*/ { p++; putchar(n); } else { putchar(c); /* введен не пробел и не табуляция - обнуляем p */ p = 0; } } return 0; }
Решение задачи: «Вывод по одному слову на строке»
textual
Листинг программы
#include <stdio.h> /* * Напишите программу, которая печатает содержимое своего ввода, помещая по одному слову на каждой строке. */ int main() { int c, ns; printf("Enter string: "); printf("\n"); while ((c = getchar()) != '\n') { if(c == ' ' || c == '\t') { if(ns == 0) { ++ns; printf("\n"); } } else { ns = 0; printf("%c", c); } } printf("\n"); return 0; }
Объяснение кода листинга программы
В этом коде программа запрашивает у пользователя строку и выводит её по одному слову на строке.
- Объявлены две переменные:
c
иns
. - Переменная
c
используется для получения следующего символа из ввода пользователя. - Переменная
ns
используется для отслеживания количества слов в текущей строке. - Выводится приглашение для ввода строки.
- В цикле while считывается каждый символ из ввода пользователя, пока не будет получен символ новой строки.
- Если текущий символ является пробелом или табуляцией, и переменная
ns
равна 0, то увеличивается значениеns
и выводится символ новой строки. - Если текущий символ не является пробелом или табуляцией, то значение
ns
сбрасывается до 0, и текущий символ выводится на экран. - После окончания ввода строки выводится символ новой строки.
- Программа возвращает 0, что означает успешное завершение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д