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

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

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

Подскажите, в чем ошибка? Задание: Напишите программу, копирующую символы ввода в выходной поток и заменяющую стоящие подряд пробелы в один пробел.
#include <stdio.h>
 
main () {
    int c, spacebar = 0;
    while ( ( c = getchar ( ) ) != EOF ) {
        while ( c == ' ' )
            ++spacebar;
        if ( spacebar <= 1 ){
            spacebar = 0;
            putchar ( c );
        }
    }
}

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

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

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

  1. Подключение стандартной библиотеки файловых операций
  2. Объявление функции main()
  3. Инициализация переменных: c, sp = 0
  4. Вход в цикл while()
  5. Получение символа ввода c с помощью функции getchar()
  6. Проверка условия if(sp != c)
  7. Если условие истинно, то символ c выводится на экран с помощью функции putchar()
  8. Переменная sp обновляется следующим образом: если c равно пробелу, то значение переменной sp становится равным c, иначе значение переменной sp становится равным 0
  9. Цикл while() повторяется до тех пор, пока символ ввода не станет равным EOF
  10. Возврат 0, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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