我正在尝试将一个 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
谢谢。
最佳答案
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char* argv[])
{
int argcCpy = argc;
char* argvCpy[10] = {};
if (argc > 9)
{
return 1;
}
for(int i = argc; i > 0; i--)
{
if (argv[i] == NULL)
{
argvCpy[i] = NULL;
}
else
{
argvCpy[i] = (char *) malloc(strlen(argv[i]) + 1);
if (argvCpy[i] != NULL)
{
strcpy(argvCpy[i], argv[i]);
}
}
}
for (int i = 0; i <= argcCpy; i++)
{
if (argvCpy[i] != NULL)
{
printf("Count: %d, string: %s\n", i, argvCpy[i]);
}
else
{
printf("Count: %d, string is null\n", i);
}
}
return 0;
}
检查 argc 是否太高。
argv[argc]
为 NULL,请考虑到这一点。
使用strcpy
,并为结束的\0
分配足够的空间。
编辑:第二个 for
循环以显示内容。
关于c - 如何在C中将一个char指针数组复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565328/