Программа, копирующая символы ввода в выходной поток, и заменяющая стоящие подряд пробелы на один - C (СИ)

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

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

Эта задача взята из учебника Керниган-Ритчи. Использую компилятор NetBeans 8.1. Все мои попытки написать действующую программу не оказались очень успешными.Как лучше подсчитать N-ое количество пробелов и вывести только один или просто подскажите куда копать...

Решение задачи: «Программа, копирующая символы ввода в выходной поток, и заменяющая стоящие подряд пробелы на один»

textual
Листинг программы
#include <stdio.h>
 
main () {
    int c, spacebar = 0;
    while ( ( c = getchar ( ) ) != EOF ) {
        if ( c != ' ' )
            spacebar = 0;
        if ( c == ' ' )
            ++spacebar;
        if ( spacebar <= 1 )
            putchar ( c );
    }
}

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

  1. Подключение стандартной библиотеки ввода-вывода
  2. Объявление переменных: — c — для хранения очередного вводимого символа — spacebar — для подсчёта количества пробелов
  3. Вход в цикл while, который будет выполняться до тех пор, пока не достигнут конец файла (EOF)
  4. Получение очередного символа с помощью функции getchar и сохранение его в переменной c
  5. Если полученный символ не является пробелом, то сбрасываем счётчик spacebar в 0
  6. Если полученный символ является пробелом, то увеличиваем счётчик spacebar на 1
  7. Если счётчик spacebar меньше или равен 1, то выводим текущий символ с помощью функции putchar
  8. Цикл while будет выполняться до тех пор, пока не достигнет конца файла (EOF)

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

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