3

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

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

这是一个例子:

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 遇到未格式化读取的斜杠 (/) 字符,它将停止读取语句,因此我必须使用格式说明符。而且由于字符串长度未知,我不确定如何确保字符串读取在第一个空格处停止。我相信可以阅读整行,然后再解析,但这似乎令人费解。有没有办法强制它将数据视为空格分隔?提前致谢。

4

1 回答 1

5

您确实需要阅读整行并解析,在这种情况下它还不错,因为您只需要解析第一个字符串并且可以内部列表读取其余部分。

read(unit,'(a)')string !declared long enough for a whole line
iblnk=index(string,' ')
read(string(iblnk:),*)seven_reals
于 2013-09-13T17:53:42.977 回答