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

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

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

Программа для копирования входного потока в выходной с заменой каждой строки, состоящей из одного или нескольких пробелов, одним пробелом.
#include <stdio.h>
 
void main (void) {
 
    int c;
 
    while((c = getchar()) != EOF) {
 
        if(c == ' ') {
            putchar(c);
        while((c = getchar()) != EOF && c == ' ');
        }
    putchar(c);
    }
 
    return;
}
Объясните пожалуйста построчно принцип действия, до меня что-то слабо доходит, с 7-ой по 13 строку.

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

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

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

  1. Включение стандартной библиотеки
  2. Объявление переменной типа int c
  3. Использование цикла while для чтения символов из стандартного ввода до конца файла
  4. Проверка на символ пробела
  5. Если символ равен пробелу, то запись этого символа в стандартный вывод
  6. Использование вложенного цикла while для чтения символов, пока не будет встречен символ пробела или конец файла
  7. Запись символа в стандартный вывод
  8. Цикл продолжается до тех пор, пока не будет встречен символ пробела или конец файла
  9. Возврат значения 0, что означает успешное завершение программы

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

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