gpt4 book ai didi

char ** nargv 为空但不知道为什么

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:33 24 4
gpt4 key购买 nike

我正在尝试做一些非常简单的事情:用我想在 C 中的 execvp 调用中使用的参数填充一个 char**。

我是这样的:

 if(argc >=1)
{
*nargv = "--action";
while(argc--)
{
printf("nargv1 => %s \t argv1 => %s \n", *nargv, *argv);
*++nargv = *argv++;
printf("nargv2 => %s \t argv2 => %s \n", *nargv, *argv);
}

printf("nargv3 => %s \t argv3 => %s \n", *nargv, *argv);
*nargv++ = '\0';
printf("nargv4 => %s \t argv4 => %s \n", *nargv, *argv);
}

输出给我:

nargv1 => --action       argv1 => backup
nargv2 => backup argv2 => --help
nargv1 => backup argv1 => --help
nargv2 => --help argv2 => (null)
nargv3 => --help argv3 => (null)
nargv4 => (null) argv4 => (null)

这听起来不错(nargv 填写正确,至少我是这么想的)> 但是当我执行 execvp("command",nargv) 时,我的参数没有通过。怎么了 ?我尝试使用 gdb 但没有成功。

问候

最佳答案

由于您执行了 ++nargv,您的 nargv 指针最终指向数组末尾。保留指向初始成员的指针并将其传递给 exec。此外,*nargv++ = '\0' 看起来像一个错误,因为您将一个 char 分配给一个指向 char 的指针。

关于char ** nargv 为空但不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com