Заменить в тексте каждую группу точек одной точкой - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести строку символов, содержащую группы идущих подряд точек. Заменить в тексте каждую группу точек одной точкой. Прошу решить мне данную задачу, у меня лабораторная а я не успел разобраться с данной темой( Заранее благодарен всем.
Нашел наработку но не рабочую
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **gets_txt();
 
int main()
{ int i=1;
char **func;
func=gets_txt();
printf("%s",func[i]);
return 0;
}
 
char** gets_txt()
{
char **func, str[128]="A";
int i=0,n,cht=1;
func=(char**)malloc(sizeof(char*));
while(strlen(str)!=0)
{
 
gets(str);
n=strlen(str);// присваиваем переменной n длинну строки str
func[i]=(char*)malloc((n+1)*sizeof(char));
strcpy(func[i],str);
func=(char**)realloc(func,(++cht)*sizeof(char*));
i++;
}
 
return func;
}

Решение задачи: «Заменить в тексте каждую группу точек одной точкой»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main(int argc, char* argv[])
{
    static char str[256] = "c++ is..object-oriented...programming........language\0";
 
    printf("string = %s\n", str);
 
    for (int i = 0; str[i] != '\0'; i++)
        if (str[i] == '.' && str[i + 1] == str[i])
        {
            while (str[i+1] == '.')
            {
                int k = i;
                while (str[k] != '\0')
                    str[k++] = str[k + 1];
            }
        }
 
    printf("output = %s\n", str);
 
    _getch();
 
    return 0;
}

Объяснение кода листинга программы

  1. В коде объявлена статическая строка str размером 256 символов, которая содержит строку c++ is..object-oriented...programming........language\0.
  2. Затем в цикле for происходит проверка каждого символа строки str.
  3. Если текущий символ str[i] равен точке ('., а следующий символ str[i+1] также равен точке ('., то выполняется код в фигурных скобках.
  4. Внутри блока кода находится вложенный цикл while, который проверяет все следующие символы, пока не встретит символ, не равный точке ('..
  5. Внутри вложенного цикла while находится еще один цикл while, который копирует все символы, начиная с текущего, в следующую позицию, как бы пропуская все точки.
  6. После выхода из вложенного цикла while, происходит выход из внешнего цикла for.
  7. В конце программы выводится на экран исходная строка str и измененная строка str.
  8. Затем программа ожидает нажатия клавиши с помощью функции _getch(), после чего завершается и возвращает 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы