gpt4 book ai didi

c - 优化字符串指针数组

转载 作者:行者123 更新时间:2023-11-30 17:40:51 25 4
gpt4 key购买 nike

我正在传递一个目录并将多个文件名存储到一个字符串指针数组中。问题是我不知道在我完全通过目录之前我可能会存储多少。这是我目前的设置方式。

char *dArr[512];
..
..
int i = 0;
while ((derent = readdir(directory)) != NULL) {
..
dArr[i] = derent->d_name;
i++;

该目录可能返回少至 0-1 个文件,或多至 1000 个以上文件,因此是否有更好的方法来存储这些事先不知道大小的文件?

最佳答案

如果您需要一个非常简单的动态增长结构,这里还有一些示例代码:

#include <stdio.h>    
#include <stdlib.h>

struct mybuf {
int bufsz;
char *buf[1];
};

int test_alloc(int x)
{
int i;
struct mybuf *mb;
// initially alloc buffer which can
// at least hold 32 (char *) pointers
mb = (struct mybuf *)malloc(sizeof(*mb) + 32*sizeof(mb->buf[0]));
mb->bufsz=32;

for (i=0;i<x;i++) {
if (i>=mb->bufsz) {
// grow buffer size to i*1.5
mb = realloc(mb,sizeof(*mb) + (i + i/2)*sizeof(mb->buf[0]) );
mb->bufsz = i + i/2;
}
mb->buf[i] = (char *)"Hello World\n";
}
for (i=0;i<x;i++) {
printf(mb->buf[i]);
}

free(mb);
}

int main()
{
test_alloc(100);
return 0;
}

关于c - 优化字符串指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357634/

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