我正在尝试读取使用逗号作为分隔符的数据文件,如下所示
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()
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)