findfirst、_wfindfirst
dir.h:インデックス への移動
ヘッダー
dir.h
カテゴリ
ディレクトリ制御ルーチン
プロトタイプ
int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);
int _wfindfirst( const wchar_t *pathname, struct _wffblk *ffblk, int attrib);
説明
ディスクのディレクトリを検索します。
findfirst は、属性またはワイルドカードで指定されたファイルをディスクのディレクトリで検索します。
pathname は、検索するファイルのドライブ指定子パス(省略可能)とファイル名を含む文字列です。ファイル名の部分でのみ、ワイルドカード文字(「?」、「*」など)を 使用できます。一致するファイルが見つかると、ffblk 構造体にファイルディレクトリ情報が格納されます。
Unicode が定義されている場合、_wfindfirst 関数は次の _wffblk 構造体を使用します。
struct _wffblk {
long ff_reserved;
long ff_fsize;
unsigned long ff_attrib;
unsigned short ff_ftime;
unsigned short ff_fdate;
wchar_t ff_name[256];
};
Win32 の場合、構造体 ffblk の形式は次のとおりです。
struct ffblk {
long ff_reserved;
long ff_fsize; /* ファイル サイズ */
unsigned long ff_attrib; /* 見つかった属性 */
unsigned short ff_ftime; /* ファイルの時刻 */
unsigned short ff_fdate; /* ファイルの日付 */
char ff_name[256]; /* 見つかったファイル名 */
};
attrib は、適切なファイルを選択して検索するために使用するファイル属性バイトです。attrib は、dos.h で定義されている次の定数を選択する必要があります。
FA_RDONLY |
読み取り専用属性 |
FA_HIDDEN |
非表示ファイル |
FA_SYSTEM |
システム ファイル |
FA_LABEL |
ボリューム ラベル |
FA_DIREC |
ディレクトリ |
FA_ARCH |
アーカイブ |
これらの定数を OR で組み合わせることができます。
これらの属性の詳細は、オペレーティング システムのマニュアルを参照してください。
ff_ftime と ff_fdate は、現在の日付と時刻を表すビット フィールドを含みます。これらのフィールドの構造は、オペレーティング システムによって設定されています。ともに 3 つのフィールドで構成される 16 ビットの構造です。
ff_ftime:
ビット 0 ~ 4 |
秒を 2 で割った結果(たとえば、10 は 20 秒を表す) |
ビット 5 ~ 10 |
分 |
ビット 11 ~ 15 |
時間 |
ff_fdate:
ビット 0 ~ 4 |
日 |
ビット 5 ~ 8 |
月 |
ビット 9 ~ 15 |
1980 以降の年(たとえば、9 は 1989 を表す) |
io.h で宣言される ftime は、ff_ftime と ff_fdate と同様の時刻と日付のビット フィールドを使用します。
戻り値
検索パス名と一致するファイルが見つかった場合、findfirst は 0 を返します。
ファイルが見つからない場合、またはファイル名にエラーがある場合は
- -1 を返します。
- errno を次の値に設定します。
ENOENT |
パスまたはファイル名が見つからない |
- _doserrno を次のいずれかの値に設定します。
ENMFILE |
No more files(これ以上ファイルはない) |
ENOENT |
パスまたはファイル名が見つからない |
例
/* findfirst と findnext の例 */
#include <stdio.h>
#include <dir.h>
int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
findfirst |
+ |
|||
_wfindfirst |
NT のみ |