File io 读取文件时发生Fortran运行时错误:";“重复计数错误”;

File io 读取文件时发生Fortran运行时错误:";“重复计数错误”;,file-io,fortran,complex-numbers,File Io,Fortran,Complex Numbers,我试图用fortran读取输入文件,但在运行时出现以下错误: At line 118 of file prog.f90 (unit = 53, file = 'data.dat') Fortran runtime error: Bad repeat count in item 1 of list input 数据文件如下所示 3, 5, 3 %comment %%%%%%%%%%%%%% 1d0, 0d0, 0d0 % comment 0d0, 0d0, 1d0 %%%%%%%%%%%%%%

我试图用fortran读取输入文件,但在运行时出现以下错误:

At line 118 of file prog.f90 (unit = 53, file = 'data.dat')
Fortran runtime error: Bad repeat count in item 1 of list input
数据文件如下所示

3, 5, 3 %comment
%%%%%%%%%%%%%%
1d0, 0d0, 0d0 % comment
0d0, 0d0, 1d0 
%%%%%%%%%%%%%%
1, 1, identity, 1, 1 %comment
1, 2, sigmax, 2, 2
2, 3, sigmax, 2, 2
1, 3, sigmaz, 1, 3
3, 3, identity, 1, 1
%%%%%%%%%%%%%%
0, 0            %comment
而prog.f90有趣的部分是

COMPLEX(KIND(1D0)), DIMENSION(:), ALLOCATABLE:: H1, H2
INTEGER :: i,A,B,C
CHARACTER(50) :: GHOST

OPEN(UNIT=53,file='data.dat',status='old')
READ(53,*) A,B,C
READ(53,*) GHOST
ALLOCATE (H1(A),H2(A))
READ(53,*) (H1(i), i=1,A)
READ(53,*) (H2(i), i=1,A)

其中第118行为读取(53,*)(H1(i),i=1,A)。我还尝试了显式的
do
循环,但结果相同。

我还没有测试过,但我希望

READ(53,*) (H1(i), i=1,A)
尝试读取3个复数。它被喂了线

1d0, 0d0, 0d0 % comment
它从中得到1½个复数,然后在
%
符号上呕吐,将其误解为语法无效的重复计数


我建议在执行
read
语句时在文件中提供3个复数。

我还没有测试过,但我希望

READ(53,*) (H1(i), i=1,A)
尝试读取3个复数。它被喂了线

1d0, 0d0, 0d0 % comment
它从中得到1½个复数,然后在
%
符号上呕吐,将其误解为语法无效的重复计数


我建议在执行
read
语句时,在文件中提供3个复数。

这些数字的维数是复数,而在fortran中,复数应该在文件中加括号,如下所示: (真实部分,想象部分)(真实部分,想象部分)

我真的不知道标准对您提供的输入表单有何规定,但经过一些测试后,
gfortran
抛出了
错误重复计数
错误,而不管
%注释
。即使行中有四个或更多逗号分隔的实数,它也会抛出该错误

现在,
ifort
另一方面,它按照您现有的方式读取该行,但请注意,它读取每个逗号分隔的值作为复变量的实部,将虚部设置为零。(即每行仅使用前两个值,并丢弃第三个值)


您将真正需要研究代码,以确保了解解决此问题的目的。如果后面的(
ifort
)行为是目的,那么一个简单的修复方法就是声明几个real。读入实数,然后将其分配给复变量。

数字标注为复数,而在fortran中,复数应包含在带括号的文件中,如下所示: (真实部分,想象部分)(真实部分,想象部分)

我真的不知道标准对您提供的输入表单有何规定,但经过一些测试后,
gfortran
抛出了
错误重复计数
错误,而不管
%注释
。即使行中有四个或更多逗号分隔的实数,它也会抛出该错误

现在,
ifort
另一方面,它按照您现有的方式读取该行,但请注意,它读取每个逗号分隔的值作为复变量的实部,将虚部设置为零。(即每行仅使用前两个值,并丢弃第三个值)

您将真正需要研究代码,以确保了解解决此问题的目的。如果后面的(
ifort
)行为是目的,那么一个简单的修复方法就是声明几个real。读入real,然后将其分配给复杂变量