用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...

似乎是一个很好的方式给我。虽然执行许多malloc,您可以清楚地为特定字符串分配内存,并且可以释放一个内存块,而不会释放整个“string array”

http://stackoverflow.com/questions/5935933/dynamically-create-an-array-of-strings-with-malloc

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:用malloc动态创建一个字符串数组