将第二个元素索引到数组的末尾?

时间:2014-01-12 22:02:51

标签: c arrays

我有一个数组args定义如下:

char *args[MAX_LINE/+1];    /* MAX_LINE = 80 */

我想将args[0]传递给execvp,并将数组的其余部分作为第二个参数传递:

execvp(args[0], args[1-x]);

我尝试了多种东西。即:

execvp(args[0], args+MAX_LINE);    /* args+MAX_LINE should point to the second element of the array (?) */

并编写一个额外的函数,通过将所有元素向左移动来删除数组的第一个元素:

void getOpts(char *opts[])
{
 int i = 0;    /* index used in the for loop */

 for(i=0;opts[i] != NULL;i++)
   opts[i] = opts[i+1];
 }

此解决方案有效但部分有效。问题是第二个元素有时可能是NULL。并且在调用execvp时系统会返回错误。

有没有一种简单的方法可以将第二个元素索引到数组的末尾?

1 个答案:

答案 0 :(得分:1)

现在,args是一个衰减到指向数组第一个元素的指针的数组,因此args+1指向第二个元素。所以你的代码应该是:

execvp(args[0], args+1);