gpt4 book ai didi

使用 dirent 计算 C 中目录中的文件数第二次不起作用。

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:22 24 4
gpt4 key购买 nike

 DIR *ptr;  
struct dirent *ent, ent2;
int n=0, i=0;
dir = ".";

ptr = opendir(dir);
while((ent = readdir(ptr)) != NULL)
{
if(ent -> d_type != DT_DIR)
{
n++;
}
}

char array[n][100];

while((ent2 = readdir(ptr)) != NULL)
{
if(ent2 -> d_type != DT_DIR)
{
strcpy(array[i], ent2 -> d_name);
i++;
}
}

在上面的 C 代码中,我试图计算工作目录中不包括文件夹的文件数。然后使用计数声明一个双字符数组,然后用于存储文件名。我需要声明知道文件数量的双数组。(不允许声明大数组)。当我声明一个大尺寸的双数组并且只是将文件名复制到它而不进行任何计数时,代码工作正常。据我了解,变量 ent 在第一个 while 循环中发生了变化。这就是我使用不同的“struct dirent ent2”的原因。

最佳答案

问题不在于使用相同的变量来存储 readdir 的结果 - 这完全没问题。

您的问题是 readdir 会在您每次调用它时提高您正在使用的 DIR * 的位置。一旦你看到了所有的文件,那个目录指针就不能再前进了。它不会循环回到开头。

您可以使用 rewinddir将其重置为目录中的第一个条目。 (或关闭它并重新打开它。)

关于使用 dirent 计算 C 中目录中的文件数第二次不起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999530/

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