【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21719

バイナリーデータの比較
投稿者---ぴょんぴょん(2005/06/29 19:38:01)


今、自作でプログラムを作成中なのですが
つまずいています。

ある文字列があります。(ファイル等から読み込んだ)
その文字列の中にある キーワードを検索し見つかったら
そのキーワードから改行までの文字列を別のバッファに
保存していくというプログラムを作成しました。
標準ライブラリのstrlen(),strncpy(),strstr()など使用
して作成したのですが、文字列の中に'\0’が入る可能性が
あるとわかりこれらのライブラリが使用できなくなってしまい
ました。

多分、文字列をバイナリーデータとして扱って自作でstrstr()
、strlen()などと似た関数('\0’を終端と見なさない)を
作成すればよいと思うのですが、うまくできません。

どなたかお知恵を借りられませんでしょうか?



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:バイナリーデータの比較 21720 まきじ 2005/06/29 19:42:48
<子記事> Re:バイナリーデータの比較 21722 REE 2005/06/29 20:08:22


No.21720

Re:バイナリーデータの比較
投稿者---まきじ(2005/06/29 19:42:48)


>どなたかお知恵を借りられませんでしょうか?

strchr() で \0 を削除するというのはどうでしょうか?



この投稿にコメントする

削除パスワード

No.21721

Re:バイナリーデータの比較
投稿者---ぴょんぴょん(2005/06/29 19:52:31)


>>どなたかお知恵を借りられませんでしょうか?
>
>strchr() で \0 を削除するというのはどうでしょうか?

すみません。
その方法も考えたんですが、元データは編集しないで
改行コードまでのデータをそのままコピーして
バッファに積まなければならないので、削除した'\0'
を復元する方法が思いつかず挫折しました。


この投稿にコメントする

削除パスワード

No.21722

Re:バイナリーデータの比較
投稿者---REE(2005/06/29 20:08:22)


>多分、文字列をバイナリーデータとして扱って自作でstrstr()
>、strlen()などと似た関数('\0’を終端と見なさない)を
>作成すればよいと思うのですが、うまくできません。
>
>どなたかお知恵を借りられませんでしょうか?

標準ライブラリにそのための、mem〜という関数群があります。



この投稿にコメントする

削除パスワード

No.21724

Re:バイナリーデータの比較
投稿者---ぴょんぴょん(2005/06/29 20:43:22)


>標準ライブラリにそのための、mem〜という関数群があります。

strstr()の代わりになるような関数ってありましたっけ?


この投稿にコメントする

削除パスワード

No.21726

Re:作りかけのプログラムのソース
投稿者---アンドロオイド(2005/06/29 20:58:29)


複数の文字列を'\0'を含めて連結して管理するということは
私もよくやります。
この場合検索処理は、
一番目の文字列をstrstrで検索。
strchrで'\0'を検索。
二番目の文字列の先頭を求める。(ギャップがなければ'\0'の位置の次)
二番目の文字列をstrstrで検索。
上記を繰り返し
のような感じですかね。あまりスマートじゃありませんが。
なお、文字列の個数あるいは最後の'\0'のアドレスを把握しておく必要があります。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧