我有一个数组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
时,系统返回错误。有没有一种简单的方法可以将第二个元素索引到数组的末尾?
最佳答案
现在,args
是一个数组,它衰减到指向该数组第一个元素的指针,因此args+1
指向第二个元素。因此,您的代码应为:
execvp(args[0], args+1);
关于c - 将第二个元素索引到数组的末尾?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21080858/