20320


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


CC BY-SA 3.0
2015-12-23T11:27:26.793
20313
2015-12-23T16:07:42.337
13656
question
c ubuntu
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]


CC BY-SA 3.0
2015-12-23T16:07:42.337
20320
2015-12-23T16:07:42.337
440
20313
answer