File io ';重复计数错误';在输入文件时,FORTRAN
我正在尝试将一个文件读入我的代码。 有两个子例程,一个写文件,另一个读文件。 写作部分是:File io ';重复计数错误';在输入文件时,FORTRAN,file-io,runtime-error,fortran90,File Io,Runtime Error,Fortran90,我正在尝试将一个文件读入我的代码。 有两个子例程,一个写文件,另一个读文件。 写作部分是: write(*,*)'entered refile, shall make file' ileunitA=int(presentstep) write(fname,1012)ileunitA 1012 format('DATA_',i6.6,'.dat') write(fnam,1112)index 1112 format('pp',i3.3) open(UNIT=ileunitA,FILE=fnam
write(*,*)'entered refile, shall make file'
ileunitA=int(presentstep)
write(fname,1012)ileunitA
1012 format('DATA_',i6.6,'.dat')
write(fnam,1112)index
1112 format('pp',i3.3)
open(UNIT=ileunitA,FILE=fname)
!variables from module global
write(ileunita,*)u,v,w,pc,p,p0,rho1,gam,con
write(ileunita,*)aip,aim,ajp,ajm,akp,akm,ap,ap0
write(ileunita,*) scon,smomu,smomv,smomw
...
读取部分如下(在另一个子程序中):
当我运行代码时,它显示以下错误:
在文件bub2.f90的第3682行(单位=25,文件='DATA_000001.dat')
Fortran运行时错误:列表输入的第1项中重复计数错误
有人能帮我找出问题所在吗?什么是“重复计数”。什么是“坏”重复计数?感谢您的猜测(您可以在问题中有问题的行中显示文本…),但是您正在使用列表定向输入(和输出)和*
作为读(和写)语句中的第二个说明符。列表定向输入允许使用语法r*c
表示具有相同值的多个字段,其中r
是数字重复计数,c
是要重复的值
如果您的任何输出项生成一个包含*
的字段,则可能会混淆输入的处理
(处理器允许(尽管很少)使用重复计数来表示具有相同值的多个输出字段,例如WRITE(unit,*)23、23、23、23
可能导致输入文件包含文本4*23
)
列表定向输入还具有一些其他功能,如分隔符字符的处理、/
字符导致输入处理终止,以及空值的可能性和处理。其中一些特性可能会让那些不熟悉规则的人感到惊讶(这些规则的灵感来自于通过穿孔卡片提交输入时所采取的典型捷径),这就是为什么通常最好避免列表导向的输入和输出,而是使用显式格式
如果您的任何数据字段都是字符类型,则应该考虑使用非默认的Delm模式来避免字符变量值中的任何特殊字符混淆输入处理。
ileunita=25;
open(unit=ILEUNITA,file='DATA_010500.dat')
!variables from module global
read(ileunita,*)u,v,w,pc,p,p0,rho1,gam,con
read(ileunita,*)aip,aim,ajp,ajm,akp,akm,ap,ap0
read(ileunita,*) scon,smomu,smomv,smomw
...