• ベストアンサー

【C言語】大文字小文字に関わらず文字列を検索したい

C言語で文字列を検索処理があるものですが、 以下のようなことがうまくできず困っています。 1.検索対象はファイルから読み込んだメモリ内の文字列。 2.対象の文字列は大文字小文字に関わらずに抽出する。 例えば、「abc」を検索するとして、文字列内が aaaaBccccdefgだとすると… aaa「aBc」cccdefg かっこ内を検索します。 strstrだと、完全な一致しかヒットしないので… 長い文字列が対象になることもあるので、 すべての組み合わせを見るのも性能的に難しいです。 何か方法ご存知の方いらっしゃいましたら、よろしくお願いします。

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

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

簡単なのは、 メモリ内の文字列をいったんすべて小文字(または大文字)にしてから 検索する方法だと思います。 非標準ですが、strcasestrという大文字小文字を無視するstrstrもあります。 (検索すればstrcasestrのソースコードが見つかるかも?)

derby
質問者

お礼

strcasestrで出来ました。 ありがとうございました。

derby
質問者

補足

ありがとうございます。 下記にも補足しましたが、 メモリ内の文字列は他の関数も使うので、 変換できないんです。 私の担当部分は該当箇所を検索し、置換処理をするんです。 strcasestrは探して、相談してみます。

その他の回答 (2)

noname#22058
noname#22058
回答No.3

メモリ内の文字列を、自分だけが使うワークエリアにコピーしてから 検索用に使えばよいのではないでしょうか。 自分だけが使うエリアですから、すべて大文字にしたり すべて小文字にしたりするのは自由にできるはずです。

derby
質問者

お礼

そうですね。 また、漏れてましたが、検索後に置換を行うので、 アドレスがわかった方が便利なものですから、 2番の方の意見を参考にしました。

noname#39970
noname#39970
回答No.1

一旦大文字または小文字に全て変換する

derby
質問者

補足

ありがとうございます。 書き忘れてしましたが、 メモリ内の文字列は他の関数が使うので、 変換できないんです。

関連するQ&A