好吧,这里有一些关于我想要达到的目标的概述。我希望用户能够输入任意数量的字符串,然后我希望将这些字符串保存在一个双字符指针中。目前我还没有处理为双字符指针扩展内存分配的问题,因为我想先让它工作。
char **list = malloc(sizeof(char*)*5);
for(i = 1; i < argc; i++) {
strcpy(list[i], argv[i]);
}
我真的认为这很简单,所以希望我犯了个愚蠢的错误。在strcpy函数中我一直收到seg错误。
最佳答案
您所做的只是为字符串指针数组分配内存(这是正确的),但是您还需要为数组中的每个字符串分配内存:
第一个(简单)选项:
char **list = malloc(sizeof(char*) * argc);
for(i = 1; i < argc; i++)
{
list[i] = strdup(argv[i]);
}
第二个(更复杂)选项:
size_t n = 0;
char **list = malloc(sizeof(char*) * argc);
for(i = 1; i < argc; i++)
{
n = strlen(argv[i]) + 1;
list[i] = malloc(n);
strcpy(list[i],argv[i]));
}