Var Arg список в основном - PullRequest
       18

Var Arg список в основном

1 голос
/ 24 сентября 2010

Я хочу использовать мою программу так:

./program -I /usr/include/ /usr/bin/ /usr/local/include/ ...

Где переключатель может включаться и включаться, как в списке переменных args. Как я мог сделать это в C99? Желательно получить что-то вроде char **args_list или char *args_list[], которое содержит все такие вещи, как /usr/include и /usr/bin/.

Ответы [ 2 ]

7 голосов
/ 24 сентября 2010

Результат выполнения следующего кода:

int main(int argc, char* argv[])
{
    for (int i = 1; i < argc; ++i)
    {
        printf("%s\n", argv[i]);
    }
}

Выполняется program -I /usr/include/ /usr/bin/ /usr/local/include/

Выход:

-I
/usr/include/
/usr/bin/
/usr/local/include/

Обратите внимание, что в примере кода начальнаяиндекс 1.Это связано с тем, что первый указатель в переменной argv является именем программы.В этом случае это будет program.

0 голосов
/ 24 сентября 2010

Ваша программа в обновлении, вероятно, работает с ошибками, поскольку вы запускаете конец массива:

    printf("%s\n", argv[2]);

нет гарантии, что argv[2].

(Может быть нулевым, если argc == 2, но я думаю, что не все printfs справляются с этим.)

...