从文本文件中读取多种类型的行,并单独存储它们?

时间:2017-08-17 15:08:14

标签: c string types text-files readfile

我对这类问题有疑问。 有一个.txt文件包含一个未知数量的行,格式如下:

城市名称(最多30个字符)温度(浮动)wind_speed(浮动)air_pressure(浮动)。

文件中的行示例: 巴黎80.81010 巴黎是城市名称,-8是温度(浮动),0.8(浮动)是风速,1010(浮动)是气压。

需要读取所有行,并将每行存储在具有特定数据类型的结构中。结果必须是结构列表。

如何读取这样的行并正确存储所有不同的数据类型而不会丢失信息? 我已经尝试了所有我能想到的东西,而且我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

这个问题取决于信息的结构方式。

例如,如果城市名称总是以字母结尾,您可以确定下一个数字是温度的开始。这很容易。

但它并不总是那么简单。在你的例子中,你怎么知道温度不是-80.81,风速是0,气压是10?

如果没有关于不同变量的可能结构和值的更多信息,您无法知道。

答案 1 :(得分:2)

阅读该行。然后使用以下假设反过来处理它:

  • 空气压力是一个介于9xx和10xx百帕斯卡之间的整数,所以最后符合这个标准的任何数字都是空气压力(除非你在火星上);

  • 风速在0.0到80节之间,除非有飓风。满足这个标准的任何数字都是风速。

  • 温度在-40到+50之间,除非您在火星,金星或北极或南极。满足这个标准的任何数字都是摄氏温度。

  • 其余部分是城市名称。

如果没有分隔符,您需要这些假设才能处理该行。解析中的任何错误都是由数据格式引起的。将这些假设传达给数据提供者,让他挑战假设。