После 1-го символа каждого слова вставить последовательность символов - C (СИ)
Формулировка задачи:
Задание:
Раздвинуть заданный текст, вставив введенную с клавиатуры последовательность символов после 1-го символа каждого слова.
#include <stdio.h> #include <conio.h> #include <locale.h> #include <string.h> #include <limits.h> void main() { setlocale ( LC_CTYPE, "RUSSIAN"); char *d, str[SHRT_MAX], str1[SHRT_MAX]; printf_s("Введите первую строку: "); gets(str); //ввод текста printf_s("Введите вторую строку: "); gets(str1); // ввод строки, которую нужно вставить int n = strlen(str1); //n - это длинна строки d = strtok(str, " "); //d - указатель на первую букву второго слова while(d) { // вот тут нужно сделать саму вставку d = strtok(NULL, " "); // d - указатель на первую букву второго, третьего и т.д. слова } puts(str); // вывод измененного текста _getch(); }
Решение задачи: «После 1-го символа каждого слова вставить последовательность символов»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <limits.h> int main() { char str[SHRT_MAX], subStr[SHRT_MAX]; printf("input first string: "); gets(str); printf("input second string: "); gets(subStr); size_t nStr = strlen(str); size_t nSubStr = strlen(subStr); char* pstr = str + nStr; while (str < pstr) { for (; (str < pstr) && (*pstr == ' '); --pstr) { ; } if (str == pstr) { continue; } for (; (str <= pstr) && (*pstr != ' '); --pstr) { ; } char* tmp1 = str + nStr; for (; (tmp1 - pstr) > 1; --tmp1) { *(tmp1 + nSubStr) = *tmp1; } char* tmp2 = subStr; for (tmp1++; *tmp2; ++tmp2, ++tmp1) { *tmp1 = *tmp2; } nStr += nSubStr; } printf("%s\n", str); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде выполняется вставка последовательности символов после первого символа каждого слова в строке. Список действий:
- Ввод первой строки с помощью функции
gets()
. - Ввод второй строки с помощью функции
gets()
. - Определение длины первой и второй строк с помощью функции
strlen()
. - Вычисление указателя на последний символ первой строки с помощью
str + nStr
. - В цикле происходит обход всех слов в первой строке:
a. Если текущий символ является пробелом, то его пропуск с помощью
*pstr == ' '
. b. Если текущее слово пустое, то его пропуск с помощьюcontinue
. c. Если текущий символ не является пробелом, то его пропуск с помощью*pstr != ' '
. - Копирование последнего символа слова в конец строки с помощью
*(tmp1 + nSubStr) = *tmp1
. - Копирование символов из второй строки в конец первой строки с помощью
*tmp1 = *tmp2
. - Увеличение длины первой строки на длину второй строки с помощью
nStr += nSubStr
. - Вывод первой строки с помощью
printf(
%s\n, str)
. - Завершение работы программы с помощью
system(
pause)
. - Возврат значения 0, указывающего на успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д