不知道是哪裏的問題:讀或寫?它看起來像你有你需要的代碼。我重寫它的東西多一點分離出來,並想出了這個:
get_userinfo(personal(Name, Gender, Age, Attr)) :-
write('Enter name: '),
readln([Name|_]),
write('Enter gender: '),
readln([Gender|_]),
write('Enter age: '),
readln([Age|_]),
write('Enter attr: '),
readln([Attr|_]).
record_userinfo(Filename, Person) :-
append(Filename),
write(Person), nl,
told.
從這裏你可以使用它像這樣:
:- get_userinfo(Person), record_userinfo('marriage.txt', Person).
如果你想讀這個,你應該可能只是consult
它:[marriages]
但您需要將其重命名爲以'.pl'結尾。
編輯:關於閱讀文件的更多信息。
在Prolog中,有閱讀和諮詢。閱讀與其他語言一樣,您可以手動讀取文件中的數據並對其進行處理。在輸入文件也是Prolog的情況下,您可以使用諮詢;它相當於解析文件並將其中定義的事實和謂詞添加到當前活動的會話中。例如,諮詢marriage.txt
文件,你可以使用這個:
:- ['marriage.txt'].
現在你已經諮詢了它,你可以在數據庫中的新情況進行查詢:
?- ['marriages.txt'].
% marriages.txt compiled 0.00 sec, 1,328 bytes
true.
?- personal(X, Gender).
X = chong,
Gender = male ;
X = jack,
Gender = female ;
X = kk,
Gender = male.
?- personal(X, male).
X = chong ;
X = kk.
?- personal(chong, X).
X = male.
如果您想要獲得所有的personal/2
事實的列表,你可以做這樣的事情:
?- setof(personal(X,Y), personal(X,Y), Qs).
Qs = [personal(chong, male), personal(jack, female), personal(kk, male)].
我不知道如何從這個marriage.txt文件 – fewer
'[「marriage.txt」]讀取數據' –
我明白了......我可以直接追蹤程序中的數據嗎? – fewer