В заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним - 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...
. - Программа возвращает ноль, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д