FindFirstFileで複数の拡張子を指定するには?

[戻る]
Chips 2002/10/08(火) 07:58:35
FindFirstFile関数を使用して1つの拡張子(例えば、*.txt)について検索するときに
は、

if((hFind=FindFirstFile("C:\\... ....\\*.txt",&wfd))
                                        ==INVALID_HANDLE_VALUE) return 0;

... ... ...

などと書きますが、2つ以上の拡張子(例えば、*.txtと*.html)について同時検索する
にはどうすればいいのでしょうか。拡張子の数だけ繰り返しFindFirstFile関数を実行す
るのは面倒なので、FindFirstFile関数の第一引数内で処理できればいいのです
が.......
ご教授の程お願いします。

Win2000
VC++6.0
SDK+MFC

dairygoods 2002/10/08(火) 16:42:19
FindFirstFileには、そのような機能がないので、
...\*.* で検索して、拡張子を見て.txtか.htmlか
判定する処理を自身で行うしかないと思います。

walQ 2002/10/08(火) 18:39:18
こんなんだめ?
#include<iostream>
#include<windows.h>
using namespace std;

void file_sarch(char *value1,char *value2)
{
  HANDLE h;
  WIN32_FIND_DATA y;
  char  path[256];
  sprintf(path,"%s%s",value1,value2);
  h=FindFirstFile(path,&y);
  int i=0;
  while(FindNextFile(h,&y)){
    i++;
    cout<<i<<": "<<y.cFileName<<endl;
  }
}
int main()
{
 //ディレクトリパスは好きなように取得して
  file_sarch("C:\\ワルチャン\\デスクトップ\\","*.html");
  //この関数を拡張子の分だけ呼び出す
 return 0;
}

walQ 2002/10/08(火) 19:41:46
あっ。
単語間違ってる
file_sarch⇒file_search
でした。
どうでもいいか

Chips 2002/10/09(水) 01:05:49
dairygoodsさん。walQさん。ありがとうございます。
ご教授をもとに自分なりに少し工夫して見ようと思います。
疑問がでれば新規にまた質問することにします。

古いスレッドには追加発言できません。