鱼C论坛

 找回密码
 立即注册
查看: 1644|回复: 3

将char类型数组复制进char*类型数组

[复制链接]
发表于 2023-9-25 17:20:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想要使用int execvp(const char *filename,const char *argv[]),要求输入一个char *argv[]
但是目前我只得到了char command[1024],我该如何将char command[1024]的内容复制进char *argv[]呢?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-25 17:21:07 | 显示全部楼层
您可以使用strcpy函数将char类型数组复制到char*类型数组中。

示例代码:
char command[1024] = "your command here";
char *argv[2]; // 定义一个长度为2的指针数组
argv[0] = "program_name"; // 将第一个参数设为程序名称
argv[1] = command; // 将第二个参数设为command数组
execvp(argv[0], argv);

在上面的代码中,我们首先定义了一个长度为2的指针数组argv。然后我们将第一个参数设为程序名称,第二个参数设为command数组。最后,我们将argv数组作为参数传递给execvp函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-25 17:32:26 | 显示全部楼层
isdkz 发表于 2023-9-25 17:21
您可以使用strcpy函数将char类型数组复制到char*类型数组中。

示例代码:

为什么运行这段代码时,会报错Bad address呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-25 20:03:29 | 显示全部楼层
catalpa-bungei 发表于 2023-9-25 14:32
为什么运行这段代码时,会报错Bad address呢?

在你提供的代码中,使用了execvp函数来执行一个外部程序。然而,如果在运行时报错"Bad address",通常是因为传递给execvp函数的参数不符合预期,或者指向无效的内存地址。

有几个可能导致"Bad address"错误的原因:

1. 命令字符串(command)可能是空指针,或者指向无效或未初始化的内存。请确保命令字符串正确赋值,并且指向有效的内存区域。

2. 程序名称(program_name)可能不正确或不存在。确保指定的程序名称是可执行程序,并且包含正确的路径(如果需要)。

3. argv数组中的指针可能没有正确设置或为空指针。请确保argv数组中的指针有效,并且最后一个元素必须是NULL指针作为结束标记。

4. 另外,注意execvp函数会替换当前进程,如果execvp执行成功,后续的代码将不会被执行。

为了更准确地定位问题,请检查代码中的相关变量和操作,确保它们符合预期并指向有效的内存区域。如果问题仍然存在,建议提供更多的代码和错误信息以便进一步排查。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 00:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表