- ベストアンサー
【C言語】大文字小文字に関わらず文字列を検索したい
C言語で文字列を検索処理があるものですが、 以下のようなことがうまくできず困っています。 1.検索対象はファイルから読み込んだメモリ内の文字列。 2.対象の文字列は大文字小文字に関わらずに抽出する。 例えば、「abc」を検索するとして、文字列内が aaaaBccccdefgだとすると… aaa「aBc」cccdefg かっこ内を検索します。 strstrだと、完全な一致しかヒットしないので… 長い文字列が対象になることもあるので、 すべての組み合わせを見るのも性能的に難しいです。 何か方法ご存知の方いらっしゃいましたら、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
簡単なのは、 メモリ内の文字列をいったんすべて小文字(または大文字)にしてから 検索する方法だと思います。 非標準ですが、strcasestrという大文字小文字を無視するstrstrもあります。 (検索すればstrcasestrのソースコードが見つかるかも?)
その他の回答 (2)
noname#22058
回答No.3
メモリ内の文字列を、自分だけが使うワークエリアにコピーしてから 検索用に使えばよいのではないでしょうか。 自分だけが使うエリアですから、すべて大文字にしたり すべて小文字にしたりするのは自由にできるはずです。
質問者
お礼
そうですね。 また、漏れてましたが、検索後に置換を行うので、 アドレスがわかった方が便利なものですから、 2番の方の意見を参考にしました。
noname#39970
回答No.1
一旦大文字または小文字に全て変換する
質問者
補足
ありがとうございます。 書き忘れてしましたが、 メモリ内の文字列は他の関数が使うので、 変換できないんです。
お礼
strcasestrで出来ました。 ありがとうございました。
補足
ありがとうございます。 下記にも補足しましたが、 メモリ内の文字列は他の関数も使うので、 変換できないんです。 私の担当部分は該当箇所を検索し、置換処理をするんです。 strcasestrは探して、相談してみます。