2017-06-05 98 views
3

我是Prolog的新手,但我瞭解基礎知識。閱讀文件時遇到問題。這是我的文件:Swi Prolog,閱讀文件示例

16 
78 45 12 32 457 97 12 5 731 2 4 55 44 11 999 7 

我想讀取它,以便我找回數字作爲字符。第一行是第2行數的量的問題是:

1)如何將它們分割的SPACE或新行字符

2)它們必須是數字:32,不字符串:「32 「

我正在使用SWI-Prolog。

+0

https://stackoverflow.com/questions/4805601/read-a-file-line-by-line-in-序言 – tso

+2

我看過這篇文章,它沒有幫助。第一個答案返回字符代碼,但我想要數字。另一個給我一個錯誤。我需要一個列表中的可用數字,以便稍後處理 –

回答

3

這是我實現:

my_read_file(File,Firt_Number ,List):- 
    open(File, read, Stream), 
    read_line(Stream, [Firt_Number]), 
    read_line(Stream, List), 
    close(Stream). 

read_line(Stream, List) :- 
    read_line_to_codes(Stream, Line), 
    atom_codes(A, Line), 
    atomic_list_concat(As, ' ', A), 
    maplist(atom_number, As, List). 

例子:

?- my_read_file("file.txt",N,L). 
N = 16, 
L = [78, 45, 12, 32, 457, 97, 12, 5, 731, 2, 4, 55, 44, 11, 999, 7] .