Копирование символов ввода в выходной поток, заменяя стоящие подряд пробелы на один пробел - 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; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки файловых операций
- Объявление функции main()
- Инициализация переменных: c, sp = 0
- Вход в цикл while()
- Получение символа ввода c с помощью функции getchar()
- Проверка условия if(sp != c)
- Если условие истинно, то символ c выводится на экран с помощью функции putchar()
- Переменная sp обновляется следующим образом: если c равно пробелу, то значение переменной sp становится равным c, иначе значение переменной sp становится равным 0
- Цикл while() повторяется до тех пор, пока символ ввода не станет равным EOF
- Возврат 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д