我正在用Fortran弄湿手,我想把一个txt文件读成一个数组。我觉得我已经尝试了一切。 txt文件以逗号分隔11行,每行有1个数字。
这是我的代码
program test
real:: obs1,i,jj,count,x_1
real,allocatable:: x(:)
open(1,file='data1.txt',status='old',action='read')
read(1,*) obs1
allocate(x(obs1))
do i=1, obs1
read(1,*) x_1
x(i)=x_1
end do
do jj=1, obs1
print*,x(jj)
end do
end program test
这是我收到的错误:
The highest data type rank permitted is INTEGER(KIND=8)
答案 0 :(得分:1)
本声明
allocate(x(obs1))
包含错误,但我不确定它是否与您报告的错误消息相匹配。 obs1
是real
变量,但数组维度(和索引)必须是整数。将obs1
的声明更改为
integer :: obs1
您的编译器也应该抱怨在do循环控件中使用real
变量,do i=1, obs1
。再次,使用整数。
顺便说一句,由于您是Fortran的新手,请学习在程序的每个范围内使用implicit none
。 SO将提供许多问题和答案来解释它意味着什么以及它为什么重要,所以你最喜欢的Fortran教程也是如此。