gpt4 book ai didi

c - C 中存储 char 的动态数组

转载 作者:行者123 更新时间:2023-11-30 18:13:56 29 4
gpt4 key购买 nike

我正在尝试在 C 中执行此操作。假设我有一个 do while 循环。在每个循环开始时,它都会初始化一个包含路径(例如/a/b/c)的char。因此,每次循环后值都会发生变化(例如/b/c/d)。

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

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

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

编辑:
如果可能的话我希望有人能在答案中提供符合我要求的解决方案,即将char插入数组还是使用链表?

最佳答案

使用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;
}

关于c - C 中存储 char 的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20674842/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com