如何从文本文件中读取Fortran 90中的行数?

Adi*_*Adi 5 fortran

如何读取文本文件中存在的行数.

我的文本文件似乎是这样的:

1
2
3
.
.
.
n
Run Code Online (Sandbox Code Playgroud)

pro*_*ils 12

nlines = 0 
OPEN (1, file = 'file.txt') 
DO 
    READ (1,*, END=10) 
    nlines = nlines + 1 
END DO 
10 CLOSE (1) 

print*, nlines

end
Run Code Online (Sandbox Code Playgroud)

PS我完全不同意这个问题"似乎不清楚并且没有付出努力".伙计,你只是不知道你在说什么.这个问题首先是绝对清楚的,其次它没有"表现出任何努力" - 在这种情况下这是一个愚蠢的要求,因为通常的做法是问"如何用语言B做A" - 不需要任何努力.

要么:

nlines = 0 
OPEN (1, file = 'file.txt')
DO
  READ(1,*,iostat=io)
  IF (io/=0) EXIT
  nlines = nlines + 1
END DO
CLOSE (1)

print*, nlines
Run Code Online (Sandbox Code Playgroud)

  • 您可能需要将 `io` 声明为整数。 (2认同)

PT2*_*009 2

虽然还不清楚,但我想如果你只需要知道文件中的行数,就wc -l <filename>在命令行上使用即可。

如果您想进一步执行任何操作,只需读取字符串中的行数并计数直到遇到文件末尾。下面是代码:

character :: inputline*200

OPEN(lin, file=inputfile, status='old', action='read', position='rewind')

loop1: DO
   READ(lin,*,iostat=eastat) inputline
   IF (eastat < 0) THEN
    numvalues = numvalues + 1
WRITE(*,*) trim(inputfile), ' :number of records =', numvalues-1
EXIT loop1

ELSE IF (eastat > 0) THEN
    STOP 'IO-error'
ENDIF
    numvalues = numvalues + 1

END DO loop1
Run Code Online (Sandbox Code Playgroud)