获取除第一个argv数组拼接以外的所有内容

时间:2018-12-02 17:03:31

标签: c

我想将char **argv转换为另一个char **,但要排除第一个元素(在我的情况下,它始终是程序名称)

我以为&argv[1]可以工作,但是现在出现段错误。


就像在python中一样,除了列表的第一个元素外,其他所有元素都可以像这样

>>> argv = [1, 2, 3]
>>> argv[1:]
[2, 3]

我想获得argv[1:]但在C中。

2 个答案:

答案 0 :(得分:0)

您可以使用标准的指针算法来操纵char** argv

char** arguments_from_second_onwards = argv + 1;    
char* second_argument = *(argv + 1);
assert(argv[1] == arguments_from_second_onwards[0]);

答案 1 :(得分:0)

感谢&argv[1]argv + 1的工作(感谢John Bollinger)。

我的细分错误是由于在代码的其他部分使用了未更改的argc值引起的(显然应该使用argc - 1)。