C言語でファイルの数を取得することはできますか


コマンドでは`ls -U1 | wc -l`のように記述するとファイル数が帰ってくるようですが、C言語でファイル数を取得するにはどのようにしたらいいですか？




ファイルかどうかをチェックした上でファイル数をカウントするのであれば以下のコードになるかと思います。

[code]

    #include <stdio.h>
    #include <unistd.h>
    #include <dirent.h>
    #include <sys/stat.h>
    
    int
    main(int argc, char* argv[]) {
        int n = 0;
        struct dirent *de;
        DIR *d = opendir(".");
        while ((de = readdir(d))) {
            struct stat st;
            if (stat(de->d_name, &st) == 0 && st.st_mode & S_IFREG)
                n++;
        }
        closedir(d);
        printf("ファイルが %d 個あります\n", n);
        return 0;
    }
    
[/code]




ファイルかどうかをチェックした上でファイル数をカウントするのであれば以下のコードになるかと思います。

[code]

    #include <stdio.h>
    #include <unistd.h>
    #include <dirent.h>
    #include <sys/stat.h>
    
    int
    main(int argc, char* argv[]) {
        int n = 0;
        struct dirent *de;
        DIR *d = opendir(".");
        while ((de = readdir(d))) {
            struct stat st;
            if (stat(de->d_name, &st) == 0 && st.st_mode & S_IFREG)
                n++;
        }
        closedir(d);
        printf("ファイルが %d 個あります\n", n);
        return 0;
    }
    
[/code]

