opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

Cであるディレクトリ以下のファイル一覧を表示する

Cである指定したディレクトリ以下のサブディレクトリも含む全てのファイルを表示するプログラムを書いてみた。
というか書いて気づいたけどぶっちゃけ再帰と言ったら怒られるような気持ち悪い再帰になってるので配列か何かでファイル一覧を返すようにしたほうがいいと思った。
本当に表示しかできないですなこれ...
応用しようがない。

#include<stdio.h>
#include<dirent.h>
#include<string.h>

//FS is file separator
const char const FS[] = "/";//Rewrite this line if you use this on windows.

int printfiles(const char* name){
    DIR* d;
    struct dirent *dp;

    if((d = opendir(name)) == NULL){
        printf("%s\n",name);
    }else{
        DIR* db;
        char filename[512];
        while((dp = readdir(d)) != NULL){
            if(strcmp(dp->d_name,".") == 0 ||strcmp(dp->d_name,"..") == 0){
                continue;
            }
            strcpy(filename,name);
            strcat(filename,FS);
            strcat(filename,dp->d_name);
            db = opendir(filename);
            if(db == NULL){
                printf("%s\n",filename);
            }else{
                printfiles(filename);
            }
        }
    }
    return 0;
}

int main(int argc,char *argv[]){
    if(argc != 2){
        fprintf(stderr,"Please input dir path\n");
        return 1;
    }else{
        printfiles(argv[1]);
        return 0;
    }
}

ksコードです。

Firefox ブラウザ無料ダウンロード