2013-04-06 134 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"]