fortran - 如果某些数据包含空格,如何读取逗号分隔的数据文件

标签 fortran fortran95

我正在尝试读取一个使用逗号作为分隔符的数据文件,如下所示

IPE 80,764,80.14,8.49
IPE 100,1030,171,15.92

但是如果我阅读使用

READ(1,*) var1, var2, var3, var4

它读取 IPE 和 80 作为不同的数据。换句话说,它将逗号和空格都算作分隔符,但我不想要这个。我怎么能告诉我的程序“嘿空格不是逗号分隔符!” ?

最佳答案

一种可能是将整行读入字符串缓冲区,然后自己查找(一些)定界符。假设与您的示例类似,只有第一列包含空格,您可以这样做:

program test
  implicit none

  character(1024) :: buffer
  character(20) :: var1
  integer :: pos, var2
  real :: var3, var4

  read(*,"(A)") buffer
  pos = index(buffer, ",")
  var1 = buffer(1:pos-1)
  read(buffer(pos+1:), *) var2, var3, var4
  print *, var1, var2, var3, var4

end program test

通过这种方式,您可以手动拆分受空格影响的字符串部分,并通过 read 语句方便地读取其后的所有内容。如果不仅第一个字段而且其他字段也可以包含空格,则很容易扩展上面的示例以通过 index() 函数在缓冲区中查找所有必要的分隔符。

关于fortran - 如果某些数据包含空格,如何读取逗号分隔的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485531/

相关文章:

arrays - Fortran:指针数组数组?

recursion - Fortran 中的树和路径查找

arrays - 从文件读取并存储在数组中的问题

fortran - 在fortran中使用数组成员作为do循环的控制变量

fortran - Fortran 2003 中类型和类的区别

arrays - 在 Fortran 中查找两个数组的交集

fortran - 可以在没有任何长度规范的情况下声明 Fortran 中的多字符常量吗?

fortran - 如何在 fortran 90/95 中使用内部类型进行一些通用编程

fortran - "too many records in I/O statement"错误的原因不明

formatting - 输出格式 : too much whitespace in gfortran