在 qbasic 程序中"while eof(n)"的目的是什么?



给定此程序代码:

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

相关内容

  • 没有找到相关文章

最新更新