Для программы я бы хотел сделать копию массива аргументов, переданных в командной строке, используя malloc ().
Так, например, если я сделаю ./a.out один два три
Я хочу массив с {a.out, один, два, три} в нем.
Однако у меня есть некоторые проблемы с работой моей программы. Вот что у меня есть:
static char** duplicateArgv(int argc, char **argv)
{
char *array;
int j = 0;
// First allocate overall array with each element of char*
array = malloc(sizeof(char*) * argc);
int i;
// For each element allocate the amount of space for the number of chars in each argument
for(i = 1; i < (argc + 1); i++){
array[i] = malloc(strlen(*(argv + i)) * sizeof(char));
int j;
// Cycle through all the chars and copy them in one by one
for(j = 0; j < strlen(*(argv + i)); j++){
array[i][j] = *(argv + i)[j];
}
}
return array;
}
Как вы можете себе представить, это не работает. Я заранее прошу прощения, если это как-то не имеет смысла, так как я только начал изучать указатели. Кроме того, я не совсем уверен, как написать код для освобождения каждого элемента в массиве * после того, как я сделаю то, что мне нужно для копии.
Может ли кто-нибудь дать мне несколько советов о том, что мне следует изучить, чтобы заставить его делать то, что я хочу?
Спасибо за любую помощь!