プロが教えるわが家の防犯対策術!

stricmpという大小区別しない比較関数があるらしいのですが
見たことがないもので中身はどうなっているのでしょうか?
stricmp(const char *s1, const char *s2){
//
//
}

{}内にかかれている定義を教えて下さい。

A 回答 (7件)

>VC++6.0なんですが、多少異なっていてもいいので


>教えていただけたら修正できると思います.

修正するのですか?
stricmpはCRT (C-RunTime)の関数です。
具体的にはMSVCRT.DLLに含まれます。

stricmpを修正するということは
即ちMSVCRT.DLLを修正することになります。

MSVCRT.DLLのビルド方法はご存知なのでしょうか?
興味本位に修正しないほうがいいと思います。

なにかstricmpにご不満があるのでしょうか?
もし、そうなら
stricmpを修正するよりも
1)希望の動作を実行してくれる関数を探す
2)自作する
の順番で検討することを強く推奨します。

自作する場合もstricmpを隠ぺいするのではなく
別名とするなり、新たな名前空間に配置するなりして、
”オリジナルのstricmpを何時でも呼べるようにしておく"
ようにしてください。
    • good
    • 0

>{}内にかかれている定義を教えて下さい。



VS2008の場合ですが
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\stricmp.c

にソースがあります。
他のバージョンでも似たようなものではないでしょうか?
    • good
    • 0

引き数 s1 と s2 のすべての英字を比較の前に小文字に変換して比較しているだけです。

    • good
    • 0

>#1さん


>Visual Studioならデバッグでステップインすれば関数の中身が見れますよ。

市販品が用意しているライブラリで、さすがにそれはできないでしょう。
    • good
    • 0

Google Code Searchで検索できます


http://www.google.com/codesearch?q=lang%3Ac+stri …
    • good
    • 0

ライブラリ関数の実装方式は、


ライブラリごとに多少異なると思います。
したがって、「こうです」という回答は
おそらく届かないと思います。
外部仕様がわかっているのであれば、
それに合うような実装をしてみる、というのはいかがでしょう。

この回答への補足

VC++6.0なんですが、多少異なっていてもいいので
教えていただけたら修正できると思います

補足日時:2009/05/07 15:49
    • good
    • 0

一文字一文字、(toupper/tolower関数を使って)大文字か小文字に変換して比較しているだけなのでは?



Visual Studioならデバッグでステップインすれば関数の中身が見れますよ。
    • good
    • 0

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