1

私の意図は、入力として指定されたディレクトリをルートとするすべてのディレクトリとファイルを深さ優先で読み取ることであり、そのために、以下に示すようにコードの一部 (非常に初期) を記述しました。

int main()
{

 DIR *fd_dir;
 struct dirent *s_dirent;
 struct stat buff;
 char str[100];

 fd_dir = opendir("/home/juggler");
 if(fd_dir == 0)
    printf("Error opening directory");

 while((s_dirent = readdir(fd_dir)) != NULL)
 {
    printf("\n Name %s",s_dirent->d_name);

 } 
 closedir(fd_dir);
}

現在、ディレクトリ juggler には A、B、C という 3 つのディレクトリがありますが、このプログラムへの出力は、これら 3 つのディレクトリだけでなく、.mozilla .zshrc .gvfs .local .bash_history なども表示します。

ジャグラー内のこれらの余分なものは何ですか?どうすればそれらを読まないのですか?

ありがとう

4

1 に答える 1

2

Unixの世界では、ファイルを非表示にするには、最初の文字を。にし.ます。したがって、単にlsディレクトリにいるときは、それらは表示されません。あなたはそれらを使うls -als -A見る必要があります。

「それらを無視する」ことはできません。ループをチェックインして、最初の文字がa.と。であるかどうかを確認できますcontinue

if ('.' == s_dirent->d_name[0]) {
    continue;
}

しかし、彼らはすべて平等な市民であることを忘れないでください。したがって、それらをスキップする理由はありませんスキップしたいのは、特別なファイル.(現在のディレクトリ)と..(親ディレクトリ)です。

于 2011-07-11T05:06:17.403 に答える