В заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним - C (СИ)
Формулировка задачи:
Добрый день. Столкнулся с проблемой в программе. Пробелы удаляет, но если ввести пробелы перед строкой, то их не удалит.
Полное задание:
Написать функцию, которая позволяет в заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним.
Специфика состоит в том, что в задании нельзя использовать библиотечные функции обрабатывания строк.
Ниже код моей программы:
C помощью еще одного цикла и метки смог избавится от проблемы, однако это только при первой вводе строки. При повторном вводе и если перед строкой пробелы - все равно один пробел остается.
#include <stdio.h> int prob(char s) { int d; d = 0; printf("Input your text:\n"); while ((s = getchar()) != EOF) { if (s == ' ') d++; if (d <= 1 ) putchar (s); if (s != ' '&&d > 1) putchar (s); if (s != ' ') d=0; } printf("Press any key to exit..."); }
Решение задачи: «В заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним»
textual
Листинг программы
int main() { int d=0; char s; setlocale(0,""); while ((s = getchar())==' ') ; putchar(s); while ((s = getchar()) != EOF) { if (s == ' ') d=1; else { if(d) { putchar(' '); d=0; } putchar (s); } } printf("Press any key to exit..."); return 0; }
Объяснение кода листинга программы
- Установка локализации на русскую языковую среду.
- Переменная
d
инициализируется нулем. - Переменная
s
используется для хранения символа, который считывается из стандартного ввода. - В цикле while считывается каждый символ из стандартного ввода до тех пор, пока не встретится символ пробела.
- Если символ равен пробелу, то переменная
d
устанавливается равной единице. - Если символ не равен пробелу, то проверяется значение переменной
d
. - Если значение переменной
d
равно единице, то выводится один пробел. - Значение переменной
d
устанавливается равным нулю. - Выводится символ, который был считан из стандартного ввода.
- Цикл while считывает каждый символ из стандартного ввода до тех пор, пока не достигнет конца файла.
- Если символ равен пробелу, то ничего не происходит.
- Если символ не равен пробелу, то он выводится на экран.
- После окончания работы программы выводится сообщение
Press any key to exit...
. - Программа возвращает ноль, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д