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