gpt4 book ai didi

C - OpenDir() 条目数

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:01 25 4
gpt4 key购买 nike

在使用 opendir() 获得 DIR * 后,我需要使用 readdir() 来读取结构 dirent 并将其存储到数组中。

为了计算出数组的大小,我可以循环遍历并计算条目数。然后,我可以分配数组,然后再次循环读取和存储 struct dirent。

但是,我想知道是否有更好的方法来获取目录条目的数量?

最佳答案

realloc 方式可能是最好的方式。这是一个示例(为演示目的选择了较小的分配大小。)未执行错误检查。在循环结束时,direntArray 有 cargo ,count 告诉你有多少。

#define num_to_alloc 10

int main(int argc, const char * argv[])
{

struct dirent *direntArray = NULL;

DIR *myDir = opendir("/tmp");
int count = 0;
int max = 0;
struct dirent *myEnt;

while ((myEnt = readdir(myDir))){
if ( count == max ){
max += num_to_alloc;
direntArray = realloc(direntArray, max * sizeof(struct dirent));
}
memcpy(&direntArray[count], myEnt, sizeof(struct dirent));
count++;
}
return 0;
}

关于C - OpenDir() 条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309894/

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