• ベストアンサー

ファイル1とファイル2の

内容が等しいか等しくないかを検出することができるWindowsAPI関数を探しています。 例えばc:\x.txtとc:\Windows\y.exeの内容が等しいかどうかです。 作るのは簡単ですが有れば便利です。 そのような関数が有れば教えてください。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>1コマンドでできればこれほど便利なことはないからです すでに、ご存じかもしれませんが、 コマンドでよければ、fcコマンドがあります。 DOS窓で fc /b fileA fileB と入力すると 違いがチェック出来ます。 このコマンドの詳細は fc /?と入力してください。

keyguy
質問者

お礼

ありがとうございます。 残念ながらWindowsアプリに組み込むつもりであり単発でコマンドでチェックするものではないのです。 dosコマンドとして使うのならば一度作って格納すれば以後使えるので作ったらおしまいですから作ります。 (実は作って使っています。)

その他の回答 (1)

  • VitaminBB
  • ベストアンサー率10% (17/165)
回答No.1

回答ではないので、申し訳有りませんが。。。 >作るのは簡単ですが有れば便利です。 ”じゃあ作れば”って気持ちになり回答したく無くなります。 すなおにどうして必要かを書かれてほうがレスが付きやすくなると思います。

keyguy
質問者

お礼

ありがとうございます。 一応作ったのですが管理が大変ですし1コマンドでできればこれほど便利なことはないからです。 以下のようになりました。 ルーチンワークであるものを毎回打ち込むのは大変です。 int FuncComp(const string& arg0,const string& arg1) { int i,j,k; ifstream ifs0,ifs1; char buffer0[256],buffer1[256]; ifs0.open(arg0.c_str(),ios::in|ios::binary); if(!ifs0.is_open())return 1; ifs1.open(arg1.c_str(),ios::in|ios::binary); if(!ifs1.is_open()){ifs0.close();return 1;} k=0; do { ifs0.read(buffer0,256); ifs1.read(buffer1,256); if((i=ifs0.gcount())==(j=ifs1.gcount())) { for(j=0;j<i;j++)if(buffer0[j]!=buffer1[j]){k=2;break;} } else k=2; if(ifs0.bad()!=0 || ifs1.bad()!=0)k=2; if(ifs0.eof()!=0 && ifs1.eof()==0)k=2; if(ifs0.eof()==0 && ifs1.eof()!=0)k=2; }while(k==0 && ifs0.eof()==0 && ifs1.eof()==0); ifs0.close(); ifs1.close(); return k; }

関連するQ&A

専門家に質問してみよう