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

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

1个回答

5

您需要阅读整行并解析,但在这种情况下,它不是很糟糕,因为您只需要解析第一个字符串,然后可以内部列表读取其余部分。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接