Передача раздела массива в C - PullRequest
0 голосов
/ 21 февраля 2019

Если у меня есть массив с массивом символов char *str[] = {"qwe", "asd", ..., "hello", "there" ,"pal"};

Как бы я передал этот массив, но с определенным диапазоном, в функцию (в частности, execv), как передать только "asd" до "привет"?

Я знаю, что вы можете передать что-то вроде str + 1, чтобы пропустить первый.Это возможно?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы не можете сделать это для execv (), как сказано на man-странице:

The list of arguments must be terminated by a null pointer, and, since these are
       variadic functions, this pointer must be cast (char *) NULL.

Использование str в execv () похоже на следующий пример

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...