Вставить 3 звездочки после каждой цифры в строке - C (СИ)
Формулировка задачи:
Условие задачи: вводить строки, завершение ввода - строка end. Затем в строках добавить *** после каждой цифры и в конце добавить текст "stars were added". Исходные и переделанные строки вывести таблицей.
Я набросал такой код, но тут даже не работает остановка ввода после end. Массив str_chg - для обработанных строк.
#include <stdio.h> #include <locale.h> #include <string.h> #define max_message 100 #define max_length 100 int read_line (char str[], int n); int main() { char str[max_message][max_length+1], str_chg[max_message][max_length+1]; char *result; int i=0, j, k=0, num_string=0; setlocale(LC_CTYPE, "rus"); printf("Вводите строки (не более 100 символов, end - завершение ввода)\n"); setlocale(LC_ALL, ".866"); for (;;){ do { gets (str[i]); i++; result=strstr(str[i], "end"); } while (result==NULL); } for (j=0; j<i; j++) printf("%-33s\n", str[j]); return 0; }
Решение задачи: «Вставить 3 звездочки после каждой цифры в строке»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> char* func(char text[]) { char* p = text; unsigned cnt = 0; for (; *p; ++p) { if (isdigit(*p)) { cnt++; } } strcpy(p + (cnt * 3), "stars were added"); for (--p; cnt; --p) { if (isdigit(*p)) { strncpy(p + (--cnt * 3) + 1, "***", 3); } *(p + (cnt * 3)) = *p; } return text; } int main() { char text[256] = "1+2=3"; printf("%s\n", text); printf("%s\n", func(text)); return 0; }
Объяснение кода листинга программы
В данном коде реализована функция, которая добавляет 3 звездочки после каждой цифры в строке.
- В начале кода определяются необходимые заголовочные файлы и прототип функции.
- Внутри функции первым делом инициализируется указатель
p
на первый символ входной строки и переменнаяcnt
равная 0. Переменнаяcnt
будет использоваться для подсчета количества цифр в строке. - Далее в цикле
for
происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то увеличивается значение переменнойcnt
. - После завершения цикла в памяти выделяется новая строка, в которую добавляются звездочки после каждой цифры. Строка
p + (cnt * 3)
указывает на позицию, с которой начинается добавление звездочек. - Затем в цикле
for
(счетчикcnt
уменьшается на единицу на каждой итерации) происходит проход по каждому символу входной строки. Если текущий символ является цифрой, то добавляются 3 звездочки после него. - После завершения цикла возвращается исходная строка.
- В функции
main
создается тестовая строка1+2=3
. - Выводится исходная строка.
- Вызывается функция
func
, в которую передается тестовая строка. - Выводится результат работы функции
func
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д