2012-05-09 3 views
1

私はsscanfと浮動小数点の解析に問題があります。問題は、テキストファイルから浮動小数点データをロードしようとしていますが、Linux上の異なるロケールで異常に動作します。 OSの小数点設定(、または。)に依存するようですが、ファイルのロード時には常に小数点です。C - sscanfのトラブル

ので、コードは次のようである:

sscanf(line[i],"%f %f %f %f %f",&floatbuffer[0],&floatbuffer[1], &floatbuffer[2], &floatbuffer[3], &floatbuffer[4]); 

が、それはたとえばpl_PLため、小数点としてカンマ(、)を使用するロケールでは動作しません。どうすれば修正できますか?

#include <locale.h> 

setlocale(LC_NUMERIC,"C"); 

答えて

2

は、あなたがしようとしています。
しかし、移植性には注意してください。

+0

はい、うまくいきません –

+0

これは 'printf()'と 'sscanf()'の両方で動作することをテストして以来、別の問題に直面している可能性があります。たぶんロケール '' POSIX ''、またはインストールされている別のロケールを試してみてください(' locale -a'を実行してインストールされているロケールを確認してください) – mvds

0

をあなたがバイナリデータを読み出し/書き込みすることができます