【问题标题】:Fortran reading mixed string and numeric dataFortran 读取混合字符串和数字数据
【发布时间】:2013-09-18 09:45:13
【问题描述】:

我在读取语句时遇到问题。我更喜欢 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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多