我有一个数据文件,其中一些行以@,#和&开头。该文件还包含数值数据列。我只想要数值数据列。
那么如何编写Fortran程序来获取新数据,避免以特殊字符开头的行?
我尝试了帖子中提供的代码。但它只是读取数字数据的第一行而不是剩余的行。
@ target g0.s1
@ type xysize
0.05966 -70.06945 0.07000
0.08949 -70.06946 0.07000
0.11932 -70.06946 0.07000
0.14915 -70.06946 0.07000
0.17898 -70.06946 0.07000
@ autoscale onread none
@ target g0.s2 `
代码
implicit none
integer, parameter :: iu = 10
real :: x
integer :: ierr
open (unit=iu,file="data.txt",action="read")
do
read (iu,*,iostat=ierr) x
if (ierr == 0) exit
end do
print*,"x =",x
end program xread_data
答案 0 :(得分:1)
如果该行可以包含除数字之外的其他内容,则无法直接将其作为数字读取,只是必须失败。
首先,您应该将该行读作字符串。
然后你可以查看该行字符串中的第一个字符,如果是注释,则跳过该行。如果没有,请尝试从内部文件中读取字符串中的数字。
character(1024) :: line
open...
do
read(iu, '(a)', iostat=ierr) line
if (ierr/=0) exit
if (line(1:1)=='@' .or. line(1:1)=='#' .or. line(1:1)=='&') cycle
read(line, iostat...) x1, x2, x3
end do
close...