重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ファイルを検索するときなんですが*.cのファイルを検索するには下のように書くんですが、*.exeのように2種類のファイルを検索すにはどう付け加えればいいでしょうか?
void DoFind()
{
HANDLE hFind;
WIN32_FIND_DATA fd;
FILETIME ft;
SYSTEMTIME st;

/* 最初のファイル検索 */
hFind = FindFirstFile("*.c", &fd);

/* 検索失敗? */
if(hFind == INVALID_HANDLE_VALUE) {
printf("検索失敗\n");
return; /******** エラー終了 ********/
}

do {
/* 更新時間取得 */
FileTimeToLocalFileTime(&fd.ftLastWriteTime, &ft);
FileTimeToSystemTime(&ft, &st);

/* 結果の表示 */
printf("ファイル名: %s", fd.cFileName);

if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
printf("(ディレクトリ)");
}

printf("\n短いファイル名: %s\n", fd.cAlternateFileName);
printf("ファイルサイズ: %d\n", fd.nFileSizeLow);
printf("更新日: %04d/%02d/%02d %02d:%02d:%02d\n\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);

} while(FindNextFile(hFind, &fd)); '次のファイルを検索

/* 検索終了 */
FindClose(hFind);
}

A 回答 (2件)

>ファイルを検索するときなんですが*.cのファイルを検索するには下のように書くんですが、*.exeのように2種類のファイルを検索すにはどう付け加えればいいでしょうか?



BLUEPIXYさんの指摘の通り、一度にはできないと思います。

------------------------
void DoFind(char* path)
--中略------------------
/* 最初のファイル検索 */
hFind = FindFirstFile(path, &fd);
------------------------

として、
DoFind("*.cpp");
DoFind("*.exe");
とするか、

または、
hFind = FindFirstFile("*.*", &fd);
として、do-whileの中で拡張子を判断するとか。
    • good
    • 0

FindFirstFile("*.c", &fd);


の部分を
FindFirstFile("*.exe", &fd);
にしてもう一度やる。
(共通部分を関数にして*.cと*.exeで呼び出す)
多分一度にはできない
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!