在Euphoria中逐行读取文本文件

时间:2017-06-04 11:19:32

标签: text io

我正在尝试使用Euphoria langauge读取一个简单的csv(逗号分隔的文本文件):

#! /usr/bin/eui

include get.e

integer file_id = open("myfile.csv","r")
if file_id != -1 then
    sequence input_data = gets(file_id)
    while sequence(input_data) do
        printf(1, "The string read is: %s", {input_data})
        input_data = gets(file_id)
    end while
end if
printf(1, "before closing..\n")
close(file_id)
printf(1, "after closing..\n")

然而,它以文件末尾的错误结束,并且在关闭之前永远不会到达#34;声明。

type_check failure, input_data is -1 

如何检测文件的结尾以便正常结束程序?我试过检查文档但找不到它。

凹凸。

1 个答案:

答案 0 :(得分:1)

将input_data的声明更改为object,如下所示:

object input_data = gets(file_id)

如果你在Phix上运行上述代码,你也会得到

while sequence(input_data) do
               ^Warning: probable logic error (always true)

提示错误的原因,并且可能是无限循环。

另外,你的close(file_id)应该在if file_id!= - 1测试中。