Копирование символов ввода в выходной поток, заменяя стоящие подряд пробелы на один пробел - 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, что означает успешный конец работы программы