C言語関係掲示板

過去ログ

No.1172 ディレクトリ内のファイル数検索 について

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

No.352.ディレクトリ内のファイル数検索 について
投稿者---スタ(2004/07/06 10:29:23)


No.352.ディレクトリ内のファイル数検索
についてお尋ねします。

私の環境で上記質問のサンプルコードを実行した所、
ファイル名、及び個数は表示されるのですが、「・」
「・・」という二つの余分なファイル(?)までも個
数に含まれてしまいます。
これがどういった症状なのか検討もつきません。
ご教授願います。

↓実行結果
「・   (不明)
 ・・」 (不明)
存在するファイル
存在するファイル

ディレクトリ内のファイル数:4


↓本来ならば・・
存在するファイル
存在するファイル

ディレクトリ内のファイル数:2

としたいのですが・・・。

環境
WinXP pro
Borland C++ Compiler 5.5

SunOS 5.8
で試しても同結果でした。


No.15266

Re:No.352.ディレクトリ内のファイル数検索 について
投稿者---スタ(2004/07/06 10:36:06)


失礼いたしました。
サンプルコードは下記です。

#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.15267

Re:No.352.ディレクトリ内のファイル数検索 について
投稿者---REE(2004/07/06 10:54:33)


[.]と[..]は、ファイルではなくディレクトリであり、
ルート以外のディレクトリ全てに存在します。
それぞれ、自分自身のディレクトリ、親ディレクトリを表します。

カウントしたくないのであれば、
名前でチェックしてカウント対象から除外してください。


No.15268

Re:No.352.ディレクトリ内のファイル数検索 について
投稿者---スタ(2004/07/06 11:05:17)



>カウントしたくないのであれば、
>名前でチェックしてカウント対象から除外してください。

その場合、ディレクトリである(からカウントしない)
という判断はどの様に行うのでしょうか?
単純に「・」と「・・」を判断するわけではないのですよね?
質問ばかりで申し訳ありません。お願いします。


No.15269

Re:No.352.ディレクトリ内のファイル数検索 について
投稿者---REE(2004/07/06 11:22:22)


>>カウントしたくないのであれば、
>>名前でチェックしてカウント対象から除外してください。
>
>その場合、ディレクトリである(からカウントしない)
>という判断はどの様に行うのでしょうか?

あなたがこの二つ以外のディレクトリを表示したいかどうかで決まります。
すべてのディレクトリを除外したいのであれば、それがディレクトリかどうかを調べる必要があるでしょう。

>単純に「・」と「・・」を判断するわけではないのですよね?

この二つだけ除外したいのであれば、それで問題ないでしょう。(ちなみに中点ではなくピリオドです)


No.15270

Re:No.352.ディレクトリ内のファイル数検索 について
投稿者---スタ(2004/07/06 11:26:57)



>この二つだけ除外したいのであれば、それで問題ないでしょう。(ちなみに中点ではなくピリオドです)

ありがとうございます。
まさにこのディレクトリを省きたいので
ちょっと考えてやってみます。
(中点になっていました、すいません)