我试图在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插入数组或使用链表?
答案 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;
}