gpt4 book ai didi

c - 如何在字符串数组中为某个新字符串动态分配内存并将该字符串复制到 C 中动态分配的空间中?

转载 作者:行者123 更新时间:2023-11-30 20:37:31 26 4
gpt4 key购买 nike

这是我的代码:

void InsertStringAt(char *array[], char *s, int pos)
{
if (pos<array.size())
{
*array[pos]=(s *)malloc(sizeof(s));
strcopy(*array[pos], *s);
}
else printf("Position exceeds dimensions of array.");
}

该函数的作用是将字符串s插入到array[]的pos位置。这段代码能实现这个目的吗?

最佳答案

不,这不行:

首先将 malloc 的结果转换为 (s *) 但 s 不是类型(它是变量)。然后,您分配 s 大小的空间,但 s 是一个指针,因此您只为指针分配空间。

然后array被声明为一个指向字符的指针数组。现在,当您访问成员时,您不再需要取消引用数组。编译器会这样做,如果你这样做,那么就会出现过多的解引用。

做:

array[pos]= malloc(strlen(s)+1);

最后,在 C 中没有类,因此 array.size 无效。您必须将数组大小作为单独的变量传递。

我可以建议你返回一个 int 来表示一切都成功了吗?例如。没有内存不足和 pos < size?

关于c - 如何在字符串数组中为某个新字符串动态分配内存并将该字符串复制到 C 中动态分配的空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426045/

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