Преобразование текста: удалить все символы "*" и повторить все остальные дважды - C (СИ)
Формулировка задачи:
Дан текст. Преобразовать его таким образом, чтобы все символы "*" были удалены, а все символы, отличные от "*" были повторены дважды. Нужен самый простой код, без функций и прочего
Решение задачи: «Преобразование текста: удалить все символы "*" и повторить все остальные дважды»
textual
Листинг программы
#include <stdio.h>
#define N 256
#define DELIM "., ?;!"
char s[N] = "* * hdhhd nnn ghhh*nnc **** fhhh*";
char ss[N*2];
int main(void)
{
char *p=s, *pp=ss;
while(*p)
{
if(*p=='*')
{
++p;
continue;
}
else
{
*pp++ = *p;
*pp++ = *p;
++p;
}
}
*pp='\0';
puts(ss);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и string.h
- Объявление массива s, который содержит исходную строку.
- Объявление массива ss, который будет содержать результат обработки строки.
- Инициализация указателей p и pp, которые будут использоваться для перебора символов строк s и ss соответственно.
- В цикле while происходит перебор всех символов строки s.
- Если текущий символ равен
*, то он пропускается (continue), иначе происходит следующее: - Два раза повторяется добавление текущего символа в строку ss (указатель pp сначала увеличивается на 1, затем на 2).
- Указатель p увеличивается на 1 после каждой итерации внутреннего цикла.
- После завершения цикла, в конце строки ss добавляется символ '\0'.
- Результат выводится на экран с помощью функции puts.
- Программа возвращает 0, что означает успешное завершение.