• ベストアンサー

C言語 ファイル検索

ファイルを検索するときなんですが*.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); }

質問者が選んだベストアンサー

  • ベストアンサー
noname#15691
noname#15691
回答No.2

>ファイルを検索するときなんですが*.cのファイルを検索するには下のように書くんですが、*.exeのように2種類のファイルを検索すにはどう付け加えればいいでしょうか? BLUEPIXYさんの指摘の通り、一度にはできないと思います。 ------------------------ void DoFind(char* path) --中略------------------ /* 最初のファイル検索 */ hFind = FindFirstFile(path, &fd); ------------------------ として、 DoFind("*.cpp"); DoFind("*.exe"); とするか、 または、 hFind = FindFirstFile("*.*", &fd); として、do-whileの中で拡張子を判断するとか。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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

関連するQ&A