gpt4 book ai didi

c - 将字符串添加到数组,正在重新分配的指针未分配

转载 作者:行者123 更新时间:2023-12-01 22:56:02 24 4
gpt4 key购买 nike

我正在尝试实现一种方法,将给定的字符串添加到以 NULL 指针结尾的数组中。这是我到目前为止所拥有的,但我收到一个错误,指出正在重新分配的指针尚未分配。

int main(void)
{
char **strings = init_array();

strings = add_string(strings, "one");
strings = add_string(strings, "two");

return 1;
}


char **init_array(void)
{
char **array = malloc(sizeof(char *));
array[0] = NULL;
return array;
}


char **add_string(char **array, const char *string)
{
unsigned int size = 0;
while (*array) {
size++;
array++;
}

char **newarr = (char **)realloc(array, sizeof(char *) * (size + 2));

newarr[size] = malloc(strlen(string)+1);
strcpy(newarr[size], string);
newarr[size+1] = NULL;

return newarr;
}

最佳答案

问题是array++。您必须传递 reallocmalloc 返回的相同值(您的 array 参数),但您在循环期间修改它,所以它会起作用仅第一次(因为 *array 将立即为 false)。您可以使用:

size_t size;
for(size = 0; array[size]; size++);

其余部分保持不变。

关于c - 将字符串添加到数组,正在重新分配的指针未分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com