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

标签 c arrays malloc

我正在尝试使用 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/

相关文章:

arrays - 在 Julia 数组理解中杀死 For 循环

c - 在结构中保存指向数组的指针

c++ - 是否可以使用宏来处理定义的内容?

c - C 语言编程中查找多维数组中的元素

c - 如何修复此排序链表插入?

php - 如何递归地将关联数组项复制到另一个数组项?

php - 计算返回空的数组中的值

c - 为什么以及何时 malloc() 在 C 中不可用?

c - 单元测试 C 库,内存管理

c程序如何在strcat中创建多个文本文件