私の目標は、ディレクトリ内のファイルの数を数えることです。調べてみると、ディレクトリ内の各ファイルを反復処理するコードが見つかりました。しかし、問題は、それが余分な時間をループしていることです。より正確には、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]
ましたが、それも役に立ちませんでした。