Мне нужно сдвинуть все элементы по определенному индексу справа в динамически выделенном символе **, чтобы я мог вставить строку в массив.Как перемещать элементы справа от динамически выделенного указателя char ** в c? Я на правильном пути?
Я смущен тем, как я могу поперек строки, хранящейся в определенном индексе, чтобы я мог перемещать их вправо?
Функция получает и int индекс, указатель на структуру SmartArray и строку char * str, которая должна быть вставлена в указанный индекс.
Есть ли я на правильном пути? Это более эффективный способ сделать это?
Это то, что я придумал до сих пор:
char *insertElement(SmartArray *smarty, int index, char *str)
{
int i;
char temp;
// Any elements to the right of index are shifted one space to the right., not sure if this is correct way to find strlen
for (i = index; i < strlen(smarty->array[index]); i++)
{
temp = smarty->array[index]
if (i == index)
{
smarty->array[index] = str[i];
}
else
{
smarty->array[index] = temp;
}
}
}
Это структура Я работаю с:
typedef struct SmartArray
{
// We will store an array of strings (i.e., an array of char arrays)
char **array;
// Size of array (i.e., number of elements that have been added to the array)
int size;
// Length of the array (i.e., the array's current maximum capacity)
int capacity;
} SmartArray;
Это хороший прецедент для ['memmove'] (http://en.cppreference.com/w/c/string/byte/memmove). –
Пожалуйста, предоставьте [mcve]. Нам нужно точно определить, как определяются все типы, как распределена память и т. Д. – kaylum
О, и у вас есть очень плохая логическая ошибка в коде, который вы показываете, о чем предупреждает вас хороший компилятор. –