2012-03-01 12 views
2

私はcsvファイルから経度、緯度および情報を読み取ってJavaスクリプトオブジェクト表記法で別のファイルに書き込むべきcsvファイルデータを読み込む小さなツールを作成しています。 例: 42.363400、-71.098465、速度= 21 42.363327、-71.097588、速度= 23cでscanfを使用してカンマ区切りの浮動小数点値を読み取る方法

今私は、私は、最初の行全体を読んで、次にを検索し、各データを選んで、個々の変数に割り当てることができます知っています。 1 stretch.Iで変数にデータをフェッチするためのscanfを使って しかし、私は知りたいどのような方法があるが、今のようにscanf関数を使用しています:

scanf("%f %f %100[^\n]s",&latitude,&longitude,info); 

は、我々はこれを成し遂げるためにscanf関数で微調整することができますか? 、あなたはおそらくも受け入れる、sscanf()を使用することにしたい

さらに
while (scanf("%f , %f , Speed = %d",&latitude,&longitude,&speed) == 3) 
    /* store in array */ 

答えて

3

は、単に必要なカンマを置きますバッファへのポインタではなく、scanf()

sscanf(csvFileBuff, "%f , %f , ... ",&latitude,&longitude, ...); 
+0

その作業中です!私はscanf.Thatsにフォーマット文字列以外のものを置くべきではないと思ったのは、なぜそこにコンマを置かなかったのかということです。 – ZoomIn

+2

'scanf' /' sscanf'ファミリのドキュメントを読むことは価値があります。例えばhttp://publib.boulder.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=%2Fcom.ibmです。 ztpf-ztpfdf.doc_put.cur%2Fgtpc2%2Fcpp_fscanf-scanf-sscanf.html。非常に基本的には、入力ストリームまたはバッファ内の文字列と一致しなければならない一連の文字を含めることができます。特に重要なのは、1つのスペースが入力バッファ内の0個以上のスペースに一致することができるというchacのポイントです。したがって、 'speed ='を書式文字列に指定すると 'speed ='や 'speed ='や 'speed ='にマッチします。簡単に言えば、空白には寛容です。 – Trevor

+0

@TrevorPageリンクに感謝します。 – ZoomIn

2

CHACの答えに:単一のスペースは0以上のブランクのシーケンスと一致していることも覚えておいてください:

+2

ファイルから読み込んだ場合はfscanf ... http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ – Julien

+0

+1 - それはおそらくもっと妥当でしょう。 – Trevor

関連する問題