我做了一些虚拟代码来学习打开和读取文件。假设我有以下 test.dat 内容
1
2
3
4
5
6
7
8
9
10
我编写了以下代码来打开和读取数据文件
subroutine readdata
implicit none
integer :: j
double precision :: test
open(unit = 100, file = 'test.dat', status = 'old', action = 'read')
do j = 1, 10
read(100,*) test
print *, 'N1=', test
end do
end subroutine
正如预期的那样,输出如下所示
gfortran -g -I/usr/include -o main main.o subroutines.o -L/usr/lib64/liblapack -L/usr/lib64/libblas
test= 1.0000000000000000
test= 2.0000000000000000
test= 3.0000000000000000
test= 4.0000000000000000
test= 5.0000000000000000
test= 6.0000000000000000
test= 7.0000000000000000
test= 8.0000000000000000
test= 9.0000000000000000
test= 10.000000000000000
Main finished.
但是,如果数据存储在单行中,如下所示
1 2 3 4 5 6 7 8 9 10
那么上面的代码不能按预期工作。它只读取行中的第一个元素然后提示错误
sharwani@linux-h6qd:~/PHD_research/myCodes/data> ./runcase.sh
rm -f *.o *.mod *.MOD *.exe *.stackdump main
gfortran -g -I/usr/include -c main.f90
gfortran -g -I/usr/include -c subroutines.f90
gfortran -g -I/usr/include -o main main.o subroutines.o -L/usr/lib64/liblapack -L/usr/lib64/libblas
test= 1.0000000000000000
At line 9 of file subroutines.f90 (unit = 100, file = 'test.dat')
Fortran runtime error: End of file
所以,我的问题是我有一个数据文件,其中包含存储在单行中的 2879 (1 x 2879) 个数字。我将如何打开并读取数据文件中的所有这些数字?