我想使用我的程序:
./program -I /usr/include/ /usr/bin/ /usr/local/include/ ...
交换机可以像var args列表一样继续运行。我怎么能在C99那样做?最好是char **args_list
或char *args_list[]
,其中包含/usr/include
和/usr/bin/
等所有内容。
答案 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都应对此。)