Удалить из строки подряд идущие цифры - C (СИ)
Формулировка задачи:
не могу разобраться со строками в си... я новичок.
Решение задачи: «Удалить из строки подряд идущие цифры»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void pars(char *str); void shift(char *s); int digit(char c); int main(void) { char string[100] = "a+12.3456-b-0.456789+1.3-45678"; printf("%s\n", string); pars(string); printf("%s\n", string); return EXIT_SUCCESS; } void pars(char *str) { while (*str) { if (*str == '.' && digit(*(str + 1)) && digit(*(str + 2))) { str += 3; while (digit(*str)) { shift(str); } } else { ++str; } } } void shift(char *s) { while (*s) { *s = *(s + 1); ++s; } } int digit(char c) { if (c >= '0' && c <= '9') { return 1; } else { return 0; } }
Объяснение кода листинга программы
В данном коде реализована функция pars
, которая удаляет из строки подряд идущие цифры. Для этого в функции используется два вспомогательных действия:
- Функция
digit
проверяет, является ли символ цифрой. Если да, то возвращается 1, иначе возвращается 0. - Функция
shift
сдвигает все символы в строке на один вправо. В функцииpars
происходит следующее: - Проверяется текущий символ строки. Если это точка, и следующие за ней два символа являются цифрами, то выполняется следующее действие.
- Строка сдвигается на три символа вперед, и в цикле, пока следующий символ является цифрой, выполняется действие из пункта 1.
- Если текущий символ не является точкой, то он пропускается, и строка сдвигается на один символ вперед.
В функции
main
создается строка, выводится на экран, затем вызывается функцияpars
, после чего строка снова выводится на экран. Пример входных и выходных данных: Входные данные:a+12.3456-b-0.456789+1.3-45678
Выходные данные:a+.3456-b-0.456789+.3-45678
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д