Вставка подстроки в строку после заданного символа
Функция:
//task5 - Вставка подстроки в строку после заданного символа.
void insert_str(char* str, const char* substr, char c) {
const char* temp = str_chr(str, c);
char *s2 = str;
if (!temp) throw - 1;
int lena = strlen(str), lenb = strlen(temp), lenc = strlen(substr);
s2[lena - lenb] = '\0';
int lend = strlen(s2);
for (int i = 0; i < lenc; i++) {
s2[i+lend] = *substr;
substr++;
}
int lene = strlen(s2);
for (int i = 0; i < lenb; i++) {
s2[i+lene] = *temp;
temp++;
}
str = copy(str, s2);
}
Основная программа:
int main() {
char s1[Max_Length] = "Hello World", s2[Max_Length] = "With Love", c = 'W';
insert_str(s1, s2, c);
cout << s1 << endl;
return 0;
}
По какой-то причине получается не "Hello With Love World", а "Hello With LoveWith" :(
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
У вас ваш код даже не компилируется...
Вот, в предположении, что места в строках для вставки у вас хватает:
void insert_str(char* str, const char* substr, char c)
{
char* t = strchr(str, c);
if (!t) throw runtime_error("Char is absent");
++t;
memmove(t+strlen(substr),t,strlen(t)+1);
memmove(t,substr,strlen(substr));
}
И вы получаете, как и просили:
Hello WWith Loveorld
Вы же просили вставить ПОСЛЕ заданного символа? :)