我的目标是计算目录中的文件数。在四处搜索之后,我发现了一段代码,它遍历目录中的每个文件。但问题是它循环了额外的时间,更准确地说是额外循环了 2 次。
因此对于
int main(void)
{
DIR *d;
struct dirent *dir;
char *ary[10000];
char fullpath[256];
d = opendir("D:\\frames\\");
if (d)
{
int count = 1;
while ((dir = readdir(d)) != NULL)
{
snprintf(fullpath, sizeof(fullpath), "%s%d%s", "D:\\frames\\", count, ".jpg");
int fs = fsize(fullpath);
printf("%s\t%d\n", fullpath, fs); // using this line just for output purposes
count++;
}
closedir(d);
}
getchar();
return(0);
}
我的文件夹包含 500 个文件,但输出显示到 502
更新
我将代码修改为
struct stat buf;
if ( S_ISREG(buf.st_mode) ) // <-- I'm assuming this says "if it is a file"
{
snprintf(fullpath, sizeof(fullpath), "%s%d%s", "D:\\frames\\", count, ".jpg");
int fs = fsize(fullpath);
printf("%s\t%d\n", fullpath, fs);
}
但我得到了storage size of "buf" isn't known
。我也尝试过struct stat buf[100]
,但这也无济于事。