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