给定此程序代码:
CLS
OPEN "school.dat" FOR INPUT AS #5
DO WHILE NOT EOF(5)
INPUT #5,ID,N$,S$,PN$
IF LEFT$(N$,1)="A" OR LEFT$(N$,1)="a" THEN
PRINT ID,N$,S$,PN$
END IF
LOOP
CLOSE#5
END
我不太明白do while not eof(5)
有什么用?如果删除eof(n)
语法会发生什么?
它说,当你不在文件的末尾时,在循环部分中执行代码。
如果没有它,代码将尝试从文件的末尾读取,并显示一条错误消息,即它已经过了文件的末尾
eof(5)
函数EOF测试传递给函数的文件号。
所以基本上它是一个保持检查的循环,若遇到文件末尾,它将退出循环。简而言之,如果你跳过这一点,你就不会读文件了。
查看此链接并搜索eof以获取示例https://www2.southeastern.edu/Academics/Faculty/pmcdowell/qbasic_manal.txt
这意味着循环将一直运行,直到它到达文件的末尾,因此循环中的部分代码将重复。你也可以通过"WHILE NOT EOF(5)"而不用"do"来完成。
此外,为了更清楚地查看程序的结构,缩进代码会有所帮助。这样的东西:
cls
open"school.dat" for input as #5
do while not eof(5)
input #5,ID,N$,S$,PN$
IF LEFT$(N$,1)="A" OR "a" THEN
PRINT ID,N$,S$,PN$
END IF
LOOP
CLOSE#5
END
EOF表示文件结束。在程序中,do循环一直持续到文件由于eof(5)而没有结束。如果删除eof,程序将进入无限循环,或者只执行一次。
这个片段描述了如何使用EOF函数退出文件读取:
CLS
OPEN "school.dat" FOR INPUT AS #5
DO
IF EOF(5) THEN
EXIT DO
END IF
INPUT #5, ID, N$, S$, PN$
IF LEFT$(N$, 1) = "A" OR LEFT$(N$, 1) = "a" THEN
PRINT ID, N$, S$, PN$
END IF
LOOP
CLOSE #5
END