stringA и stringB оба указателя - они содержат начальный адрес для ячейки памяти. Память, на которую они указывают, содержит непрерывные строки символов: «abcdef» и «123» соответственно. Поскольку строки являются непрерывными блоками памяти (это означает, что ячейка памяти заданного символа является одним байтом после предыдущего), вы не можете вставить больше символов в середину строки, не перемещая сначала некоторые символы. В вашем случае вы даже не можете этого сделать, поскольку объем памяти, выделяемый для каждой строки, достаточно велик, чтобы удерживать JUST эту строку (игнорируя заполнение).
Что вам нужно сделать, это скопировать строки в другой блок памяти, который вы выделили для этой цели, и скопировать их, чтобы вторая строка начинала с символов x в первую строку.
Несколько других пользователей SO опубликовали программные решения, но я думаю, вы должны попытаться найти точное решение самостоятельно (и, надеюсь, мое высокоуровневое объяснение того, что происходит, поможет).
Это домашнее задание? –
Кроме того, вы отметили этот C++. Если это C++, и это не домашнее задание, почему бы просто не использовать std :: string? –
Я знаю, как это сделать с помощью std :: string, и ya это домашнее задание –