Var arg list in main

时间:2010-09-24 00:02:26

标签: c c99 variadic-functions

我想使用我的程序:

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

交换机可以像var args列表一样继续运行。我怎么能在C99那样做?最好是char **args_listchar *args_list[],其中包含/usr/include/usr/bin/等所有内容。

2 个答案:

答案 0 :(得分:7)

运行以下代码的输出:

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

答案 1 :(得分:0)

您的更新中的程序可能是segfaulting,因为您正在运行数组的末尾:

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

无法保证有argv[2]

(如果argc == 2,它可能为null,但我认为并非所有printfs都应对此。)