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


对我来说似乎是个好方法。尽管您执行了许多malloc,但是您显然为特定的字符串分配了内存,并且可以释放一个内存块,而无需释放整个“字符串数组”

07-24 09:46
查看更多