C言語関係掲示板

過去ログ

No.352.ディレクトリ内のファイル数検索

[戻る] [ホームページ]
No.2286

ディレクトリ内のファイル数検索
投稿者---トミー(2002/08/03 09:39:21)


私はHP-UX10.20上でC言語のプログラムを書いています。
以下の質問があります。アドバイスお願いします。

【質問内容】
指定したディレクトリ内のファイル数を得るにはどのようにしたら良いですか。

以上、よろしくお願いします。



No.2287

Re:ディレクトリ内のファイル数検索
投稿者---ともじ(2002/08/03 13:53:15)


こんにちは。

>指定したディレクトリ内のファイル数を得るにはどのようにしたら良いですか。

非標準ですが、opendirでディレクトリをopenすると、
readdirでディレクトリ内のファイル名を調べることができますので、
ファイルの個数を数えてください。


#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
        DIR *dir;
        struct dirent *ent;
        int count = 0;

        if (argc != 2) {
                printf("ディレクトリ名を指定してください\n");
                exit(1);
        }
       
        if ((dir = opendir(argv[1])) == NULL) {
                perror("ディレクトリが開けません");
                exit(1);
        }
        
        while ((ent = readdir(dir)) != NULL) {
                printf("%s\n",ent->d_name);
                count++;
        }
        printf("\nディレクトリ内のファイル数:%d\n", count);

        closedir(dir);

        return (0);
}



No.2288

Re:ディレクトリ内のファイル数検索
投稿者---トミー(2002/08/03 20:27:59)


大変参考になるアドバイスをありがとうございました。
上手くいきました。

>こんにちは。
>
>>指定したディレクトリ内のファイル数を得るにはどのようにしたら良いですか。
>
>非標準ですが、opendirでディレクトリをopenすると、
>readdirでディレクトリ内のファイル名を調べることができますので、
>ファイルの個数を数えてください。
>
>
>#include <dirent.h>
>#include <stdio.h>
>#include <stdlib.h>
><pre>
int main(int argc,char *argv[])
{
DIR *dir;
struct dirent *ent;
int count = 0;

if (argc != 2) {
printf("ディレクトリ名を指定してください\n");
exit(1);
}

if ((dir = opendir(argv[1])) == NULL) {
perror("ディレクトリが開けません");
exit(1);
}

while ((ent = readdir(dir)) != NULL) {
printf("%s\n",ent->d_name);
count++;
}
printf("\nディレクトリ内のファイル数:%d\n", count);

closedir(dir);

return (0);
}
</pre>