2013-04-06 109 views
0

我想退出一个循环,读取列表中的文件内容,当我点击一行文字说“停止”。这里是我的代码:麻烦停止文件读取过程

let f_in = "file.text" 
let lines = ref [];; 

    let chan = open_in f_in in 
    try 
    while true do 

     let line = input_line chan in 
     if line = "stop" then raise End_of_file; 
     lines := input_line chan :: !lines 

    done 
    with End_of_file -> close_in chan 

的问题是,它的阅读1分多余的,而且它不会读取具有文本中的单词“停止”线。一个例子是这种文件:

aaa 
bbb stop 
ccc stop 
ddd 
eee 
stop 
fff 

现在我的代码应该打印了所有的线,并停止在具有单词“停止”仅线读取。有人能解决这个问题吗谢谢。

+4

你应该考虑阅读并提出新问题之前评论/接受的答案,你已经问的问题... – Thomas 2013-04-06 17:58:28

+0

@Thomas他们没” t准确地回答了问题,它对我有任何用处,所以如果它不是我要求的那么标记答复是没有意义的:) – ace007 2013-04-06 18:49:15

+3

你的行为粗鲁,并且没有自己努力解决这些问题。这就像你试图在没有学习语言的情况下解决学校作业一样,而不是在一次干净的镜头中给我们分配任务,而是通过几个步骤对它进行散列处理,以此作为一种粗暴的方式而不是一次。 – gasche 2013-04-07 06:06:18

回答

0

line替换第二个input_line会得到您想要的结果。

let f_in = "file.text" 
let lines = ref [];; 

let chan = open_in f_in in 
    try 
    while true do 

     let line = input_line chan in 
     if line = "stop" then raise End_of_file; 
     lines := !lines @ [ line ] 

    done 
    with End_of_file -> close_in can 

存储在lines结果是:

["aaa"; "bbb stop"; "ccc stop"; "ddd"; "eee"]