catalpa-bungei 发表于 2023-9-25 17:20:58

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

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

isdkz 发表于 2023-9-25 17:21:07

您可以使用strcpy函数将char类型数组复制到char*类型数组中。

示例代码:

char command = "your command here";
char *argv; // 定义一个长度为2的指针数组
argv = "program_name"; // 将第一个参数设为程序名称
argv = command; // 将第二个参数设为command数组
execvp(argv, argv);


在上面的代码中,我们首先定义了一个长度为2的指针数组argv。然后我们将第一个参数设为程序名称,第二个参数设为command数组。最后,我们将argv数组作为参数传递给execvp函数。

catalpa-bungei 发表于 2023-9-25 17:32:26

isdkz 发表于 2023-9-25 17:21
您可以使用strcpy函数将char类型数组复制到char*类型数组中。

示例代码:


为什么运行这段代码时,会报错Bad address呢?

Mike_python小 发表于 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执行成功,后续的代码将不会被执行。

为了更准确地定位问题,请检查代码中的相关变量和操作,确保它们符合预期并指向有效的内存区域。如果问题仍然存在,建议提供更多的代码和错误信息以便进一步排查。
页: [1]
查看完整版本: 将char类型数组复制进char*类型数组