0
我有这样的Fortran代码从外部文件中读取数据的两列:如何打开和读取文件
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
因此使用文件20,但它似乎不喜欢的任何名称我在文件中使用,所以问题是,我应该如何命名文件?顺便说一下,这是一个.txt
。
我有这样的Fortran代码从外部文件中读取数据的两列:如何打开和读取文件
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
因此使用文件20,但它似乎不喜欢的任何名称我在文件中使用,所以问题是,我应该如何命名文件?顺便说一下,这是一个.txt
。
你不是read
从文件,而是从units
。因此,如果您想按照您的示例从单元20
进行读取,则需要先使用该单元打开文件。正如评论中所建议的,这通常是通过open
声明完成的。对于一个名为yourfile.txt
文件,程序会再读取
OPEN(unit=20, file='yourfile.txt', status='old', &
action='read', iostat=stat)
if(stat /= 0) stop 'Could not open file'
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
! ...
如果你不先打开一个文件,至少gfortran
和ifort
尝试从一个名为fort.<unit>
读取文件,你的情况fort.20
。不过,我无法在标准中找到该行为的参考。
不要忘记在阅读后关闭文件,并尽量避免固定的单位数量。如果您的编译器支持它,请在打开文件时使用说明符newunit=
。
open(unit = 20,file =“你想要什么”)(放在循环2之前) –
你如何打开单元20?只要您正确打开文件,就可以调用该文件。 – casey