В строке каждую группу рядом стоящих символов "+" заменить одним таким символом - C (СИ)
Формулировка задачи:
В строке каждую группу рядом стоящих символов "+" заменить одним таким символом.
Решение задачи: «В строке каждую группу рядом стоящих символов "+" заменить одним таким символом»
textual
Листинг программы
#include <string.h>
#include <stdio.h>
int main()
{
char s[] = "kldvj+++kldhv+djsc++++zdjhcv+";
char *e = s + strlen(s);
char *p;
while ((p = strstr(s, "++")) != NULL)
memmove(p, p + 1, e - p);
printf("%s\n", s);
}
Объяснение кода листинга программы
- Подключить необходимые библиотеки для работы со строками и файловым вводом-выводом
- Объявить переменную
sтипаcharи инициализировать её строковым литераломkldvj+++kldhv+djsc++++zdjhcv+ - Вычислить длину строки
sс помощью функцииstrlen()и сохранить результат в переменнойe - Выделить память под указатель
pна последнем символе строкиs - В цикле
whileискать следующую пару символов++с помощью функцииstrstr()и сохранять указатель на первый найденный символ++в переменнойp - С помощью функции
memmove()переместить символы, начиная сp + 1и до конца строки, на позициюp, перезаписывая их. Таким образом, пары символов++заменяются на один символ++ - Повторять пункты 5-6 до тех пор, пока не будет найдена следующая пара символов
++ - Вывести измененную строку с помощью функции
printf() - Ввод-вывод данных завершается автоматически, поэтому программа заканчивается на этом шаге