我需要使用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/

10-14 12:32