存储char的C中的动态数组

时间:2013-12-19 06:30:36

标签: c arrays

我试图在C中这样做。让我说我有一个while循环。在每个循环开始时,它初始化包含路径的char(例如/ a / b / c)。因此,在每个循环之后,值改变(例如/ b / c / d)。

我想要做的是在下一个循环开始之前的每个循环结束时,将值存储到Array。由于我不知道Array的大小,我不能在C.中使用静态数组 我知道在java中很容易实现,例如使用ArrayList存储我的值,但那是java,这是C所以我知道它完全不同。(抱歉,我刚开始学习C)

List<String> myList = new ArrayList<String>();  
myList.add(path);

我想知道C中是否有类似的替代方法。我看一些例如link,但这使用了int。如何存储包含文件路径的char。

编辑:
如果可能的话,我希望有人可以根据我的要求提供解决方案,即将char插入数组或使用链表?

1 个答案:

答案 0 :(得分:-1)

使用malloc()为数组动态分配内存。你需要在free()使用后释放分配的内存 对于您提供的链接,我根据您的需要修改了代码。但你不能按原样使用下面的代码。你需要根据需要重写它。

typedef struct {
  char *array;
  size_t used;
  size_t size;
} Array;

void initArray(Array *a, size_t initialSize) {
  a->array = (char *)malloc(initialSize * sizeof(char));
  a->used = 0;
  a->size = initialSize;
}

void insertArray(Array *a, char *string) {
  if (a->used == a->size) {
    a->size = strlen(string)+1;
    a->array = (char *)realloc(a->array, strlen(string)+1);
  }
  strcpy( a->array,string );

}

void freeArray(Array *a) {
  free(a->array);
  a->array = NULL;
  a->used = a->size = 0;
}