Вы не можете сделать это для 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"