掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

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

掲示板2

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

No.27293

文字列中の実数値取り出し
投稿者---Yu(2006/06/22 12:13:13)


お世話になります。

<DiectPosition.coordinate>45.364224 148.450781</DirectPosition.coordinate>

より、実数値のみを取り出したいのですが、sscanfで
は上手く行きません。。。
字句解析等で、1文字ずつ確認するしかないのでしょうか。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列中の実数値取り出し 27294 iijima 2006/06/22 12:55:26
<子記事> Re:文字列中の実数値取り出し 27295 si 2006/06/22 13:10:20
<子記事> Re:文字列中の実数値取り出し 27297 kz3 2006/06/22 13:23:25


No.27294

Re:文字列中の実数値取り出し
投稿者---iijima(2006/06/22 12:55:26)


>字句解析等で、1文字ずつ確認するしかないのでしょうか。

自前でやるならそうでしょうね。
XMLファイルを扱うのであれば、既存のXMLパーサーを使うのもありかと。

# 地理情報標準ですか...


この投稿にコメントする

削除パスワード

No.27295

Re:文字列中の実数値取り出し
投稿者---si(2006/06/22 13:10:20)


単に、
DiectPosition.coordinate -> DirectPosition.coordinate
ではないですか?


この投稿にコメントする

削除パスワード

No.27298

Re:文字列中の実数値取り出し
投稿者---Yu(2006/06/22 13:25:21)


>単に、
>DiectPosition.coordinate -> DirectPosition.coordinate
>ではないですか?

iijimaさん
地理情報標準です。あるSWの海岸線データを更新するのですが、
フォーマットがXMLに変わっていて、四苦八苦しています。。。
XMLパーサーも試してみたのですが、Web上でも参考例が少なく
今は、諦めています。

Siさん
ご指摘の通りです。…超単純ミスでお恥ずかしい。
sscanf(readBuff, "<DiectPosition.coordinate>%f %f</DirectPosition.coordinate>", &ido, &keido );
で、難無く取得です。お騒がせしました。

kz3さん
ソースご提供、有難うございます。
字句解析の一例ですね。
参考にさせて頂きます。


この投稿にコメントする

削除パスワード

No.27297

Re:文字列中の実数値取り出し
投稿者---kz3(2006/06/22 13:23:25)


><DiectPosition.coordinate>45.364224 148.450781</DirectPosition.coordinate>
>
>より、実数値のみを取り出したいのですが、sscanfでは上手く行きません。。。
>字句解析等で、1文字ずつ確認するしかないのでしょうか。

条件はちょっとありますがこう書いてみました。

#include <stdio.h> #include <string.h> #define SITUATION 1 int main( void ) { char tok[] = "<DiectPosition.coordinate>45.364224 148.450781</DirectPosition.coordinate>"; double d1, d2; #if SITUATION == 1 char *p; p = strchr( tok, '>' ); if( p!=NULL ) sscanf( ++p, "%lf %lf", &d1, &d2 ); #elif SITUATION == 2 // スキャンセットが使えれば sscanf( tok, "<%*[a-zA-Z.]>%lf %lf</%*[a-zA-Z.]>",&d1, &d2 ); #endif printf("SITUATION = %d\n", SITUATION ); printf("%f\n", d1 ); printf("%f\n", d2 ); return 0; }




この投稿にコメントする

削除パスワード

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