Char удаление символов: объяснить строку кода - C (СИ)
Формулировка задачи:
Здравствуйте объясните пожалуйста как работает данная строка она удаляет символы, но не могу понять как?
strok[k++] = strok[k + 1];
for (i = 0;strok[i] != '\0'; i++)
if (strok[i] == '.' && strok[i + 1] == strok[i])
{
while (strok[i+1] == '.')
{
int k = i;
while (strok[k] != '\0')
strok[k++] = strok[k + 1];
}
}Решение задачи: «Char удаление символов: объяснить строку кода»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
/*Задание 2
Ввести строку символов, содержащую группы идущих подряд точек. Заменить в тексте каждую группу точек одной точкой.*/
int main(int argc, char* argv[])
{
char str[256];
gets(str);
printf("string = %s\n", str);
int i;
for (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);
return 0;
}
Объяснение кода листинга программы
- Вводится строка символов, содержащая группы идущих подряд точек.
- В цикле проходит по каждому символу строки.
- Если текущий символ равен '.', а следующий символ также равен '.', то выполняется замена группы точек одной точкой.
- Для замены группы точек одной точкой используется вложенный цикл.
- Вложенный цикл начинает свое выполнение с индекса следующего символа после текущего и сдвигается вправо до тех пор, пока не встретит символ, не равный '.'.
- В процессе работы вложенного цикла, символы, начиная с текущего и до следующего не равного '.', сдвигаются вправо на одну позицию.
- После завершения вложенного цикла, выполняется замена группы точек одной точкой.
- После выполнения всех замен, выводится измененная строка.
- Программа завершается возвратом значения 0. Список переменных:
- str - массив символов, введенных пользователем.
- i - переменная цикла, используемая для прохода по каждому символу строки.
- k - переменная цикла, используемая во вложенном цикле для сдвига символов вправо. Значения переменных не выделены кавычками, так как в данном случае они не используются.