Fortran读取混合字符串和数字数据

时间:2013-09-13 16:12:50

标签: fortran

我在阅读声明时遇到问题。我更喜欢Fortran90,但如果它有帮助,其他版本可能是可能的。我在文件中有一堆数据,可以描述为:

  • 空间分隔
  • 不是固定格式
  • 包含一个字符串后跟7个数字
  • string包含正斜杠/

以下是一个例子:

maxele/OS1_HC_LF_A_0001_004_maxele.63    4.22E-03        9.00E-01        1.00E-06        1       -999    -999    -999
maxele/OS1_Inl_A_0001_005_maxele.63     2.11E-03        9.00E-01        1.00E-06        3       -999    -999    -999
maxele/OS1_HC_LF_C_0001_009_maxele.63  1.56E-03        9.00E-01        1.00E-06        2       58.77   -82.82  28.91
maxele/OS1_TS_B_0001_006_maxele.63   3.90E-03        9.00E-01        1.00E-06        1       -999    -999    -999  

我已经了解到如果遇到无格式读取的斜杠(/)字符,Fortran将停止读取语句,因此我必须使用格式说明符。并且由于字符串长度未知,我不确定如何确保字符串读取在第一个空格处停止。我相信它可以在整行中阅读,然后再进行解析,但这看起来很复杂。有没有办法强迫它将数据视为空格分隔?提前致谢。

1 个答案:

答案 0 :(得分:5)

你确实需要阅读整行和解析,在这种情况下它不是那么糟糕,因为你只需要解析第一个字符串,内部列表可以读取其余字符串。

read(unit,'(a)')string !declared long enough for a whole line
iblnk=index(string,' ')
read(string(iblnk:),*)seven_reals