【问题标题】:'Bad repeat count' while inputting a file, FORTRAN输入文件时出现“错误的重复计数”,FORTRAN
【发布时间】:2013-12-09 19:15:52
【问题描述】:

我正在尝试将文件读入我的代码。 有 2 个子程序,一个用于写入文件,另一个用于读取文件。 写作部分是:

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
...

读取部分如下(在另一个子程序中):

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
...

当我运行代码时,它显示以下错误:

在文件 bub2.f90 的第 3682 行(单位 = 25,文件 = 'DATA_000001.dat')

Fortran 运行时错误:列表输入的第 1 项中的重复计数错误

谁能帮我弄清楚可能是什么问题?什么是“重复计数”。什么是“坏”重复计数?谢谢

【问题讨论】:

    标签: file-io runtime-error fortran90


    【解决方案1】:

    猜测一下(您可以在问题的问题行中显示文本...),但您使用列表定向输入(和输出),* 作为读取(和写入)中的第二个说明符) 陈述。列表导向输入允许使用语法r*c 表示具有相同值的多个字段,其中r 是数字重复计数,c 是要重复的值。

    如果您的任何输出项生成包含* 的字段,则可能会混淆输入处理。

    (允许(尽管很少)处理器使用重复计数来表示具有相同值的多个输出字段,例如WRITE (unit,*) 23, 23, 23, 23 可能会导致输入文件包含文本4*23。)

    列表定向输入还具有其他一些功能,例如分隔符的处理、导致输入处理终止的/ 字符以及空值的可能性和处理。其中一些功能可能会让那些不熟悉规则的人感到惊讶(这些规则的灵感来自于通过打孔卡提交输入时采用的典型快捷方式),这就是为什么通常最好避免列出定向输入和输出并改用显式格式。

    如果您的任何数据字段是字符类型,您应该考虑使用非默认 DELIM 模式以避免字符变量值中的任何特殊字符混淆输入处理。

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 1970-01-01
      • 2018-05-28
      • 2018-08-06
      • 2013-12-19
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多