findfirst、_wfindfirst

提供: RAD Studio
移動先: 案内検索

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 のみ



関連項目