将char类型数组复制进char*类型数组
想要使用int execvp(const char *filename,const char *argv[]),要求输入一个char *argv[]但是目前我只得到了char command,我该如何将char command的内容复制进char *argv[]呢? 您可以使用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函数。 isdkz 发表于 2023-9-25 17:21
您可以使用strcpy函数将char类型数组复制到char*类型数组中。
示例代码:
为什么运行这段代码时,会报错Bad address呢? 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]