我想使用 FORTRAN 流式 I/O 来制作一个程序,告诉我一个文本文件有多少行。这个想法是做这样的事情:
OPEN(UNIT=10,ACCESS='STREAM',FILE='testfile.txt')
nLines=0
bContinue=.TRUE.
DO WHILE (bContinue)
READ(UNIT=10) cCharacter
IF (cCharacter.EQ.{EOL-char}) nLines=nLines+1
IF (cCharacter.EQ.{EOF-char}) bContinue=.FALSE.
ENDDO
(我没有包括变量声明,但我想你知道它们是什么;唯一重要的说明是 cCharacter 的 LEN=1)
我的问题是我不知道如何检查我刚刚从文件中读取的字符是行尾还是文件尾(代码中的“ifs”)。当您以这种方式阅读和打印字符时,您最终会在原始文本中的相同位置获得换行符,所以我认为它确实会以某种方式将它们读取并识别为“字符”。也许将字符转换为整数并与适当的数字进行比较?还是有更直接的方法?
(我知道你可以使用寄存器读取(编辑:我的意思是记录读取)来做一个更容易读取行的程序并添加一个 IOstatus 来检查 eof,但是“行计数器”只是一个有用的例子,这个想法是学习如何通过文本文件以更可控的方式移动)