检查是否已经到达打开文件的末尾
语法
用法
result = EOF( filenum )
参数
返回值
如果达到文件结束,则返回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。
参考