gpt4 book ai didi

c - 使用 malloc 动态创建字符串数组

转载 作者:太空狗 更新时间:2023-10-29 16:21:39 30 4
gpt4 key购买 nike

我正在尝试使用 malloc 在 C 中创建一个字符串数组。数组将容纳的字符串数量可以在运行时改变,但字符串的长度将始终保持一致。

我已经尝试过这个(见下文),但遇到了麻烦,任何正确方向的提示都将不胜感激!

#define ID_LEN 5
char *orderedIds;
int i;
int variableNumberOfElements = 5; /* Hard coded here */

orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1));

最终我希望能够使用数组来做到这一点:

strcpy(orderedIds[0], string1);
strcpy(orderedIds[1], string2);
/* etc */

最佳答案

您应该分配一个 char 指针数组,然后,为每个指针分配足够的内存用于字符串:

char **orderedIds;

orderedIds = malloc(variableNumberOfElements * sizeof(char*));
for (int i = 0; i < variableNumberOfElements; i++)
orderedIds[i] = malloc((ID_LEN+1) * sizeof(char)); // yeah, I know sizeof(char) is 1, but to make it clear...

对我来说似乎是个好方法。虽然你执行了很多mallocs,但是你清楚地为一个特定的字符串分配了内存,你可以释放一 block 内存而不用释放整个“字符串数组”

关于c - 使用 malloc 动态创建字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5935933/

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