我在读取语句时遇到问题。我更喜欢 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 遇到未格式化读取的斜杠 (/) 字符,Fortran 将停止读取语句,因此我必须使用格式说明符。而且由于字符串长度未知,我不确定如何确保字符串读取在第一个空格处停止。我相信可以读取整行,然后进行解析,但这似乎很复杂。有没有办法强制它将数据视为以空格分隔?提前致谢。
您确实需要读取整行并进行解析,在这种情况下,它还不错,因为您只需要解析第一个字符串,并且内部列表可以读取其余的字符串。
read(unit,'(a)')string !declared long enough for a whole line
iblnk=index(string,' ')
read(string(iblnk:),*)seven_reals
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)