dポイントプレゼントキャンペーン実施中!

C言語で文字列を検索処理があるものですが、
以下のようなことがうまくできず困っています。

1.検索対象はファイルから読み込んだメモリ内の文字列。
2.対象の文字列は大文字小文字に関わらずに抽出する。
例えば、「abc」を検索するとして、文字列内が
aaaaBccccdefgだとすると…
aaa「aBc」cccdefg
かっこ内を検索します。
strstrだと、完全な一致しかヒットしないので…
長い文字列が対象になることもあるので、
すべての組み合わせを見るのも性能的に難しいです。

何か方法ご存知の方いらっしゃいましたら、よろしくお願いします。

A 回答 (3件)

簡単なのは、


メモリ内の文字列をいったんすべて小文字(または大文字)にしてから
検索する方法だと思います。


非標準ですが、strcasestrという大文字小文字を無視するstrstrもあります。
(検索すればstrcasestrのソースコードが見つかるかも?)

この回答への補足

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

strcasestrは探して、相談してみます。

補足日時:2006/11/15 07:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/16 10:26

メモリ内の文字列を、自分だけが使うワークエリアにコピーしてから


検索用に使えばよいのではないでしょうか。
自分だけが使うエリアですから、すべて大文字にしたり
すべて小文字にしたりするのは自由にできるはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/16 10:28

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

この回答への補足

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

補足日時:2006/11/15 07:33
    • good
    • 0

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