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