readdir、wreaddir
dirent.h:インデックス への移動
ヘッダー ファイル
dirent.h
カテゴリ
ディレクトリ制御ルーチン
プロトタイプ
struct dirent *readdir(DIR *dirp); struct wdirent *wreaddir(wDIR *dirp)
説明
ディレクトリ ストリームから現在のエントリを読み取ります。
readdir
は POSIX 準拠の UNIX システムで使用できます。
readdir
関数は、dirp で参照されるディレクトリ ストリームから現在のディレクトリ エントリを読み取ります。 ディレクトリ ストリームは次のエントリに進みます。
readdir
関数は、dirent 構造体を指すポインタを返します。この構造体は、同じディレクトリ ストリームに対してこの関数を呼び出すたびに上書きされます。 別のディレクトリ ストリームに対して readdir
を呼び出しても、この構造体は上書きされません。
dirent 構造体は単一のディレクトリ エントリに対応します。 この構造体は dirent.h に定義されており、(アクセスできない他のメンバに加えて)以下のメンバで構成されます。
char d_name[];
ここで、d_name は、現在のディレクトリ エントリの NULL 終端ファイル名が格納されている文字配列です。 配列のサイズは不定です。ファイル名の長さを特定するには、strlen を使用します。
サブディレクトリ、"."、".."、システム ファイル、隠しファイル、ボリューム ラベルなどの有効なディレクトリ エントリがすべて返されます。 未使用または削除済みのディレクトリ エントリはスキップされます。
ディレクトリ ストリームの読み取り中にディレクトリ エントリを作成または削除することができますが、それらのディレクトリ エントリを readdir
が返すかどうかはわかりません。 ディレクトリを rewinddir で先頭に戻したり opendir で開き直すと、readdir
は必ずディレクトリの現在の状態を反映するようになります。
wreaddir
関数は readdir
の Unicode 版です。 これは wdirent 構造体を使用しますが、それ以外は readdir
と同様です。
戻り値
正常終了した場合、readdir
は、ディレクトリ ストリームの現在のディレクトリ エントリを指すポインタを返します。
ディレクトリの終わりに達した場合や、dirp が開いているディレクトリ ストリームを指していない場合、readdir
は NULL を返します。
例
#include <dirent.h> void print_dir(wchar_t* dir_name) { /* Open the directory and check for success */ wDIR* dir = wopendir(dir_name); wdirent* ent; if (!dir) return; /* Navigate in the directory stream */ while (ent = wreaddir(dir)) { /* print the name of the entry */ printf("%ls\n", ent->d_name); } }
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
readdir |
+ |
+ |
||
wreaddir |
+ |