我有一個數組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
被調用時,系統返回一個錯誤。
有沒有簡單的方法來索引第二個元素到數組的末尾?
恩,那是故意的分歧嗎? (MAX_LINE/+ 1)。這只是MAX_LINE。 – HostileFork
使用指針算術:'args + 1'或括號表示法:'&args [1]'是要走的路。 –