Я пытаюсь выделить достаточное пространство для хранения всех аргументов командной строки, заданных для массива arg_list
в обратном порядке.C: Malloc String Array Confusion
char* arg_list[6];
arg_list = malloc((sizeof(char*)) * argc);
for (i=argc; i < 0; i--)
{
arg_list[i]=argv[i];
}
Моя теория была на malloc
, чтобы получить sizeof
в char*
, а затем умножить на сколько аргументы, которые были даны, argc
давая общий объем пространства, необходимого.
Затем, используя цикл, начните i
на количество элементов, argc
, скажем, 5, например, а затем положить 5-й элемент argv
в 5-е место в arg_list
и делать это до тех пор, пока он получает 0.
Я получаю предупреждения от incompatible implicit declaration
и об ошибке assignment to expression with array type
и не знаю, где я ошибся. Кроме того, я использую C около полутора лет, так что неважно, как можно больше! Я бы очень признателен!
EDIT: Проблема Распечатка обращенно массива Код:
char** arg_list = malloc((sizeof(char*)) * argc);
/** arg_list points to the command-line arguments in the */
/** reversed order */
for (i=argc-1; i >= 0; i -=1)
{
arg_list[i]=argv[i];
}
/** print the content of arg_list */
/** fill here */
for (i=0; i<argc; i++)
{
printf(arg_list[i]);
printf("\n");
}
Я запутался, как я бы идти о печати обратном порядке. Всякий раз, когда я печатаю его, он печатает в обычном порядке, а не наоборот. Я смущен тем, как он попадает в arg_list
в обычном порядке, а не наоборот. Благодаря!
Shoudn't ваша петля будет 'for (i = argc - 1; i> 0; i -)', так как вы отсчитываете? – Figaro
Что было бы полезно, поскольку у вас уже есть эти данные? – Olaf
@Olaf Я хочу изменить порядок 'argv' в' arg_list'. Это просто учебное упражнение – Bob