ファイルを検索します。

構文

int findfirst(
  const char *filename,
  struct ffblk *ffblkp
);

パラメータ

filename
[in] 検索するファイルを"ファイル名.拡張子"の形式で指定します。次のワイルドカードを含めることができます。
?任意の1文字と一致します。
*ファイル名または拡張子の終わりまでの任意の文字列と一致します。
ffblkp
[out] 検索結果を格納するffblk構造体を指すポインタ。

戻り値

 検索条件に一致するファイルがあればOKを、それ以外はERRORを返します。

解説

 filenameで指定した名前のファイルをカレントワーキングディレクトリで検索し、最初に一致したファイルの検索結果をffblkpで指定したffblk構造体に返します。
 filenameで指定した名前と一致するディレクトリも返されるので注意してください。ファイルの属性はffblk構造体attribメンバーで確認できます。
 ffblk構造体に返されたファイルの次に一致するファイルを検索するには、findnext関数を使用します。

必要条件

ヘッダファイル:
lib.h
ライブラリファイル:
libSTARTUPOPH5000.a

サンプル

#include <stdio.h>
#include "lib.h"

void makeTestFiles()
{
    FILE *fp;

    f_mkdir("/TESTDIR");
    f_mkdir("/TESTDIR/SUBDIR");

    fp = fopen("/TESTDIR/test1.txt", "w");
    fclose(fp);

    fp = fopen("/TESTDIR/test2.txt", "w");
    fclose(fp);
}

void main(void)
{
    struct ffblk finddata;

    makeTestFiles();

    //Change directory to the searching directory first.
    f_chdir("/TESTDIR");

    if (findfirst("*.*", &finddata) == OK){
        do {
            if (finddata.attrib & AM_DIR)
                printf("SubDir:");
            else
                printf("File  :");

            printf("%s.%s\n", finddata.name, finddata.ext);
        }while (findnext(&finddata) == OK);
    }

    f_chdir("/");

    while(1){
        Idle();
    }

    /*
    <Output>
    SubDir:SUBDIR.
    File  :TEST1.TXT
    File  :TEST2.TXT
    */
}

関連事項

最終更新日:2020/11/18