我想将char **argv
转换为另一个char **
,但要排除第一个元素(在我的情况下,它始终是程序名称)
我以为&argv[1]
可以工作,但是现在出现段错误。
就像在python中一样,除了列表的第一个元素外,其他所有元素都可以像这样
>>> argv = [1, 2, 3]
>>> argv[1:]
[2, 3]
我想获得argv[1:]
但在C中。
答案 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
)。