ZetCode

FreeBasic Line Input 关键字

最后修改日期:2025 年 6 月 16 日

FreeBasic 的 Line Input 关键字可以从文件或控制台读取一整行文本。它会捕获所有字符直到遇到换行符,非常适合读取完整的文本行。

基本定义

在 FreeBasic 中,Line Input 是一个语句,用于从输入源读取一整行文本。它在遇到换行符或文件末尾时停止读取。

Input 不同,Input 在遇到逗号或空格时会停止,而 Line Input 会一直读取直到行终止符。这使得它非常适合读取可能包含分隔符的文本。

基本控制台输入

此示例演示了从控制台读取一行文本。

line_input_console.bas
Dim userInput As String

Print "Enter your name: "
Line Input userInput

Print "Hello, "; userInput; "!"

在这里,我们使用 Line Input 从用户那里读取一整行。包括空格在内的整个输入都存储在 userInput 中。当您需要捕获姓名或句子时,这非常有用。

从文件读取

Line Input 通常用于逐行读取文本文件。

line_input_file.bas
Dim fileNum As Integer = FreeFile()
Dim lineText As String

Open "example.txt" For Input As #fileNum

While Not EOF(fileNum)
    Line Input #fileNum, lineText
    Print lineText
Wend

Close #fileNum

此代码逐行打开一个文本文件并读取它。每一行都会打印到控制台。循环会一直进行,直到到达 EOF(文件末尾)。使用后务必关闭文件。

处理空行

Line Input 可以从文件或控制台输入读取空行。

line_input_empty.bas
Dim lines(3) As String
Dim i As Integer

Print "Enter 4 lines (can be empty):"

For i = 0 To 3
    Line Input lines(i)
Next

Print "You entered:"
For i = 0 To 3
    Print i; ": '"; lines(i); "'"
Next

此示例显示 Line Input 可以正确处理空行。程序将每一行存储在一个数组中,然后显示它们及其行号。空行显示为空字符串。

读取特殊字符

Line Input 可以读取包含逗号、引号和其他会中断普通 Input 的特殊字符的行。

line_input_special.bas
Dim csvLine As String

Print "Enter CSV data (with commas):"
Line Input csvLine

Print "You entered: "; csvLine

Dim parts() As String
Split(csvLine, ",", parts())

Print "First field: "; parts(0)

这演示了读取包含逗号的 CSV 数据。Line Input 会捕获整行,然后可以对其进行处理。Split 函数用于分隔字段。

与文件操作结合使用

此示例展示了一个使用 Line Input 的完整文件处理例程。

line_input_processing.bas
Function CountLines(filename As String) As Integer
    Dim fileNum As Integer = FreeFile()
    Dim lineCount As Integer = 0
    Dim dummy As String

    Open filename For Input As #fileNum
    
    While Not EOF(fileNum)
        Line Input #fileNum, dummy
        lineCount += 1
    Wend
    
    Close #fileNum
    
    Return lineCount
End Function

Print "File has "; CountLines("data.txt"); " lines"

此函数使用 Line Input 来计算文件中的行数。每次调用 Line Input 都会在文件中向前移动。每读取一行,计数器就会递增。处理完计数后,文件会正确关闭。

错误处理

使用 Line Input 进行文件操作时,正确的错误处理非常重要。

line_input_error.bas
Dim fileNum As Integer
Dim lineText As String

On Error Goto errorHandler

fileNum = FreeFile()
Open "missing.txt" For Input As #fileNum

Line Input #fileNum, lineText
Print lineText

Close #fileNum
End

errorHandler:
Print "Error: "; Err
If fileNum Then Close #fileNum

此示例展示了基本的文件操作错误处理。如果文件不存在,On Error 语句会重定向到错误处理程序。处理程序会打印错误并确保在文件已打开的情况下将其关闭。

高级文件处理

此示例演示了使用 Line Input 进行更复杂的文件处理。

line_input_advanced.bas
Sub ProcessLogFile(filename As String)
    Dim fileNum As Integer = FreeFile()
    Dim lineText As String
    Dim errorCount As Integer = 0
    
    Open filename For Input As #fileNum
    
    While Not EOF(fileNum)
        Line Input #fileNum, lineText
        
        If InStr(lineText, "ERROR") Then
            Print "Found error: "; lineText
            errorCount += 1
        End If
    Wend
    
    Close #fileNum
    
    Print "Total errors found: "; errorCount
End Sub

ProcessLogFile("app.log")

此子程序处理日志文件,计算包含“ERROR”的行数。使用 Line Input 读取每一行,并检查关键字。处理完整个文件后,将显示总计数。

最佳实践

本教程介绍了 FreeBasic 的 Line Input 关键字,并通过实际示例展示了其在不同场景下的用法。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 FreeBasic 教程