EOF
 
检查是否已经到达打开文件的末尾

语法
用法

result = EOF( filenum )

参数

filenum
一个打开文件的Integer文件号。

返回值

如果达到文件结束,则返回true(-1),否则返回0(0)。

说明

当从Input (文件模式)打开的文件中读取时,知道文件的末尾何时到达是有用的,因此避免了读取文件末尾导致的错误。使用EOF来确定这一点。EOF期望从已打开的文件中有效的文件编号。使用FreeFile检索可用的文件文件编号。

对于绑定到Output打开的文件的文件编号,EOF始终返回0。

例子

''此代码找到要使用的免费文件编号,并尝试打开该文件
''“file.ext”,如果成功,将我们的文件编号绑定到打开的文件。It
''逐行读取文件,将其输出到屏幕。我们循环直到eof()
''返回true,在这种情况下,如果文件为空,我们忽略循环。

Dim As String file_name
Dim As Integer file_num

file_name = "file.ext"
file_num = FreeFile( )                 ''检索可用的文件编号

''打开我们的文件并绑定我们的文件编号,退出错误
If( Open( file_name For Input As #file_num ) ) Then
   Print "错误:打开文件" ; file_name
   End -1
End If

Do Until EOF( file_num )               ''循环,直到我们到达文件的结尾
   Dim As String text
   Line Input #file_num, text               ''读一行文字...
   Print text                             ''...并将其输出到屏幕
Loop

Close #file_num                        ''通过我们的文件号关闭文件

End 0


由于编译器在不同平台上使用的库的潜在差异,当在Windows版本的编译器中阅读在Linux中创建的文本文件(具有LF行结尾)时,EOF函数可能不可靠。DOS和Linux编译器没有这个问题。一个解决方案是打开文件进行二进制访问,而不是输入。线路输入#和EOF仍然可以像上面的例子那样使用,EOF功能可以正常工作。此解决方案不会检测到文件字符的结尾,但这仅用于标记不是磁盘文件的文本流的结尾。

与QB差别

  • 在QB中,当没有等待读取的字符时,通信端口发信号通知EOF。
  • 在QB中,对于以RANDOM或BINARY模式打开的文件,EOF只有在尝试读取文件结束后才返回非零值。在FreeBASIC中,EOF在读取最后一项后返回true。

参考