【发布时间】:2016-04-12 06:37:52
【问题描述】:
我正在尝试将一个 char 指针数组存储到另一个 char 指针数组。我遇到了同样的分段错误。
int main(int argc, const char* argv[])
{
int argcCpy = argc;
char* argvCpy[10] = {};
for(argcCpy = argc; argcCpy>0; argcCpy--)
{
argvCpy[argcCpy] = (char *) malloc(strlen(argv[argcCpy]));
memcpy(argvCpy[argcCpy], argv[argcCpy], strlen(argv[argcCpy]));
printf("\nCount: %d, string: %s", argcCpy, argvCpy[argcCpy]);
}
return 0;
}
我花了足够多的时间来完成这项工作,但我无法做到。此外,已经提出了同样的问题,也没有得到回答。如果有人可以让我知道相同的工作代码,那将非常有帮助。
希望得到答复。
类似问题的链接被忽略了 -- C Beginner - Copying a char *array to another char *array
谢谢。
【问题讨论】:
-
argvCpy[0]在你的程序中应该包含什么?垃圾? -
为什么我需要一个变量来保存垃圾值?已经初始化!!感谢 cmets :) @Lundin 我需要这个 var 来保存 *argv 数组..
-
我的意思是:您的代码不会将任何内容复制到索引 0 中,因此它只是坐在那里占用空间。这反过来表明数组大小不正确或循环未正确编写。
-
我需要来自 arg 2 @Lundin 的值。因此从 arg2 开始将其存储在 argvCpy 中。
-
但此代码将 argv[x] 到 argv[1] 以倒序存储到您的数组中。那么你需要多少参数呢? 8?那为什么要声明一个 10 的数组呢?