在C中传递数组的一部分

时间:2019-02-21 05:05:53

标签: c arrays string

如果我有一个字符数组char *str[] = {"qwe", "asd", ..., "hello", "there" ,"pal"};

我如何将具有特定范围的数组传递给函数(特别是execv),例如仅将“ asd”传递给“ hello”?

我知道您可以传递类似str + 1的内容来跳过第一个。这可能吗?

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"