2017-08-17 17 views
0

私はこのタイプの問題に関する質問があります。 次のような形式の未知数の行を含む.txtファイルがあります。複数のタイプの行をテキストファイルから読み込んで別々に保管していますか?

都市名(最大30文字)気温(浮動小数点数)wind_speed(浮動小数点数)air_pressure(浮動小数点数)

ファイルの行の例: パリ80.81010 -8温度(フロート)、0.8(フロート)風速1010(フロート)であるパリは、都市名である 、空気圧。

すべての行を読み込み、各行を特定のデータ型の構造体に格納する必要があります。結果は構造体のリストである必要があります。

このような行を読み、情報を失うことなく適切にすべての異なるデータ型を格納するにはどうすればよいですか? 私はおそらく考えられるすべてのことを試しましたが、私はこれをどうやって行うのか分かりません。

+0

また、都市名には、その都市の気象観測所の番号を使用できるため、番号も付けることができます。例Paris02、Amsterdam21、Berlin03など – CptWhoWent

+1

デリミタはありませんか?もしそうなら、これは解決することが不可能です。 –

+0

Iharob Al Asimi、ありがとう、私は考えが必要です。 :) – CptWhoWent

答えて

2

これは、情報がどのように構成されているかによって異なる質問です。

たとえば、都市名が常に文字で終わる場合、次の数字が気温の開始点であることがわかります。それは簡単です。

しかし、必ずしも単純ではありません。あなたの例では、気温が-80.81でないこと、風速が0、気圧が10であることをどのように知っていますか?

異なる変数の考えられる構造と値についての詳細がない場合、あなたは知る方法がありません。

2

行を読んでください。次に、以下の仮定を用いて、逆にそれを処理する:

  • 空気圧は9XXと10XX hectoパスカルの間の整数であるので、(あなたが火星上にある場合を除く)端会議で任意の数は、この判断基準は、空気圧であります;

  • 風速は、ハリケーンがない限り、0.0〜80ノットの間です。この基準に合致する数は風速です。

  • 火星、金星または北極または南極にいない限り、温度は-40〜+50の間です。この基準に合致する数値は、摂氏温度です。

  • 残りは都市名です。あなたはこれらの仮定はラインを処理できるようにする必要があり、区切り文字なし

。解析中のエラーは、データ形式によって発生します。これらの前提をデータプロバイダに伝え、前提条件に挑戦させます。

+0

私はいくつかの上級生に相談しました。 問題が明記されていないとしても、ファイルの行は、行内のデータ間に空白(スペース)があるように記述されています。 その点は、学生が他の方法では解決できないと結論づけることでした。この情報を 、問題は容易で解決されるであろう: '一方(FEOF(FILE *)== 0){ 関数fscanf(ファイル*、 "%sの%F%F%F"、CHAR * somestring、float1、float2、float3); /*それから構造体に格納する*/ } ' コードの一部として。 これはすべて、変数の合理的な名前です。 お世話になりました。 – CptWhoWent

関連する問題