[[Programming]] [[ここ:http://www.ncad.co.jp/~komata/c-frame.htm]]を参照 ディレクトリ名も取得する必要があれば,[[hidden_dir_h]] #include<stdio.h> #include<dirent.h> void main(argc,argv) int argc; char*argv[]; { DIR *dir; struct dirent *dp; char path[512]; // ディレクトリは引数から判断する. if(argc<=1){ strcpy(path,"."); } else{ strcpy(path,argv[1]); } if((dir=opendir(path))==NULL){ perror("opendir"); exit(-1); } for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){ printf("%s\n",dp->d_name);// ディレクトリ名は表示しない } closedir(dir); } ほかに[[こんな情報:http://f4.aaa.livedoor.jp/~pointc/log1251.html]]も #include <stdio.h> #include <dirent.h> int main(argc,argv) int argc; char *argv[]; { DIR *dir; struct dirent *dp; char path[257];/*指定したディレクトリ名を入れる*/ int f_count = 0;/*ファイル数カウント用*/ char (*f)[33];/*ファイル名を保存する配列*/ int i;/*↑の配列の添え字用*/ if(argc!=2){ printf("コマンドラインの入力形式が間違っています\n"); printf("test_readdir02 入力ファイル名\n"); exit(-1); }else{ /*コマンドライン引数よりディレクトリ名を指定*/ strcpy(path,argv[1]); } /*ディレクトリを開く*/ if((dir=opendir(path))==NULL){ perror("opendir"); exit(-1); } /*ファイル数をカウントする*/ while ((readdir(dir)) != NULL) { f_count++; } printf("f_count=%d\n",f_count); /*★★★ここでポインタを先頭に★★★*/ rewinddir(); rewinddir(dir); /*ファイル名を入れる配列を確保する*/ f = (char (*)[33])malloc((f_count-2) * 33); /*ファイル名を配列にコピーする*/ i=0; for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){ strcpy(f[i], dp->d_name); printf("%s\n",f[i]); i++; } closedir(dir); /*記憶域を開放*/ free(f); return; }