Fortran 如何打开和读取文件
我有一个Fortran代码,它从外部文件读取两列数据:Fortran 如何打开和读取文件,fortran,fortran90,fortran77,fortran95,Fortran,Fortran90,Fortran77,Fortran95,我有一个Fortran代码,它从外部文件读取两列数据: PRINT*, ' Q1 Q2 ' DO 2 J = 1, NPTS READ(20,*) Q1(J),Q2(J) WRITE(*,98) Q1(J),Q2(J) 所以使用了文件20,但它似乎不喜欢我在文件中使用的任何名称,所以问题是,我应该将文件命名为什么?顺便说一句,它是一个.txt。您不从文件中读取,而是从单元中读取。所以,如果您想像在您的示例中那样从单元20读取数据,您需要首先使用
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
所以使用了文件20,但它似乎不喜欢我在文件中使用的任何名称,所以问题是,我应该将文件命名为什么?顺便说一句,它是一个
.txt
。您不从文件中读取,而是从单元中读取。所以,如果您想像在您的示例中那样从单元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)
! ...
如果不先打开文件,至少要尝试从名为fort.
的文件中读取gfortran
和ifort
,在您的情况下是fort.20
。不过,我在标准中找不到这种行为的参考
读取后不要忘记关闭文件,并尽量避免使用固定的单元号。如果编译器支持,请在打开文件时使用newunit=
说明符 您不从文件中读取,而是从单元中读取。所以,如果您想像在您的示例中那样从单元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)
! ...
如果不先打开文件,至少要尝试从名为fort.
的文件中读取gfortran
和ifort
,在您的情况下是fort.20
。不过,我在标准中找不到这种行为的参考
读取后不要忘记关闭文件,并尽量避免使用固定的单元号。如果编译器支持,请在打开文件时使用newunit=
说明符 打开(unit=20,file=“what you want”)(放在循环2之前)如何打开第20单元?只要你能正确地打开文件,你叫它什么并不重要。打开(unit=20,file=“what you want”)(放在循环之前2)你是如何打开第20单元的?只要正确打开文件,文件的名称并不重要。