如果我有一个字符数组char *str[] = {"qwe", "asd", ..., "hello", "there" ,"pal"};
我如何将具有特定范围的数组传递给函数(特别是execv),例如仅将“ asd”传递给“ hello”?
我知道您可以传递类似str + 1的内容来跳过第一个。这可能吗?
答案 0 :(得分:2)
您不能为execv()执行此操作,如联机帮助页所述:
The list of arguments must be terminated by a null pointer, and, since these are
variadic functions, this pointer must be cast (char *) NULL.
execv()中str的用法类似于以下示例
void func1(char *str[])
{
for(int i=0; str[i]!=NULL; i++)
printf("%s:%s\n", __func__, str[i]);
}
但是,如果函数具有如下声明和用法:
void func2(char *str[], int n)
{
for(int i=0; i<n; i++)
printf("%s:%s\n", __func__, str[i]);
}
您可以将其称为以下内容,以仅将“ asd”传递到“ hello”。
func2(str+a, n);
//where str[a] is "asd" and str[a+n-1] is "hello"