我需要使用char**userIDArray来存储一个用户ID列表(最多32个字符),该列表将逐个添加到列表中。要存储的ID号未知。
我最初的想法是创建另一个char**start-指向数组开头的指针。
然后我会在*userIDArray中分配空间。代码应该类似于:
if (arraySize == 0)
{
userIDArray = malloc(sizeof(*userIDArray));
*userIDArray = malloc(32 * sizeof(char));
strcpy(*userIDArray, userID);
start = userIDArray;
}
else
{
int i = 0;
while(i < arraySize && strcmp(*userIDArray, userID) != 0)
{
i++;
userIDArray++;
}
if(strcmp(*userIDArray, userID) == 0)
{
printf("already in the array");
}
else
{
arraySize++;
start = realloc(start, arraySize * sizeof(*userIDArray));
*userIDArray = malloc(32 * sizeof(char));
strcpy(*userIDArray, userID);
}
userIDArray = start;
}
这给了我各种各样的错误。
有没有更简单的方法添加到多维数组中?
最佳答案
要存储的ID号未知。
在这种情况下,阵列是一个糟糕的存储选择。如果你创建一个字符串数组,一个char **,那么你需要分配足够的空间来最大限度地增加字符串的数量,或者继续重新分配USER数组。
一个更好的设计是将数据存储在一个结构中,比如一个链表,这个链表很容易添加或删除。
关于c - C添加到双指针数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24090161/