如何打开和读取文件
How to open and read a file
我有从外部文件读取两列数据的 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=
说明符。
我有从外部文件读取两列数据的 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=
说明符。