C言語関係掲示板

過去ログ

No.1254 '='の右側の文字列を順次読み取る方法

[戻る] [ホームページ]
No.2604

パラメータファイルからのデータ読み取り方法
投稿者---とも(2004/08/31 16:51:02)


お世話になります。以下のパラメータファイルから'='の右側の文字列を順次読み取る方法を教えて下さい(右側のデータがブランクの場合も含めて)。

smtp_srv=smtp.nifty.com
from_addr=xxx@nifty.com
reply_addr=xxx@nifty.com
to_addr=xxx@nifty.com
cc_addr=xxx@yahoo.co.jp

または、簡単に読み込めるパラメータファイルのフォーマット形式例を教えて下さい。


No.2605

Re:パラメータファイルからのデータ読み取り方法
投稿者---nop(2004/08/31 17:19:49)


>パラメータファイルから'='の右側の文字列を順次読み取る方法を教えて下さい。

1.strstr() or strchr()で'='を検索
  '='の次の文字からデータとして取得
2.strtok()で区切り文字を"="とし、
  二つ目のトークンをデータとして取得

等々…

# どちらも各行をfgets()で一行ずつ取得することを前提



No.2606

Re:パラメータファイルからのデータ読み取り方法
投稿者---NykR(2004/08/31 19:07:55)


fgets等で文字列を読み込んだ後、sscanfで解析して、=の右側だけ取り出す。

書式文字列は、
=が出てくるまで読み捨てる。---> %*[^=]
=を読み捨てる              ---> =
文字列を読み込む           ---> %s

ですから、これらを並べて "%*[^=]=%s" になります。

=のあるなしで処理を分けたいときは、=を捨てずに、char型配列(2文字以上)に読み込み、
sscanfの戻り値をみるようにすればよいでしょう。
その場合書式文字列は "%*[^=]%1[=]%s" です。


No.2612

Re:パラメータファイルからのデータ読み取り方法
投稿者---とも(2004/09/01 12:49:55)


ありがとうございます。今、ちょっと忙しいので明日にでもやってみます。

>=が出てくるまで読み捨てる。---> %*[^=]
>=を読み捨てる ---> =
>文字列を読み込む ---> %s
>ですから、これらを並べて "%*[^=]=%s" になります。

このような使い方知りませんでした。なんか正規表現のように複雑ですね。