Prolog how to save file in an existing file

2019-02-24 07:31发布

How do I save on an existing file after adding new data

add_a_link(X,Y) :-
    tell('alink.txt'),
    write(X),
    write('.'),
    write(Y),
    write('.'),
    put(10),
    told,
    write('data written'),
    nl.

this code only re-write the text file.

标签: file io prolog
1条回答
可以哭但决不认输i
2楼-- · 2019-02-24 07:59

Use open/3 and stream oriented I/O:

open(file, append, S), write(S, info(X,Y)), put_char(S,.), nl(S), close(S).

Using tell/1 and told is extremely unreliable. It easily happens that the output is written to another file accidentally.

Edit: Here is an example to illustrate the extremely unreliable properties of tell/1 and told.

Say, you write tell(file), X > 3, write(biggervalue), told. This works fine as long as X > 3. But with a smaller value this query fails and nothing is written. That might have been your intention. However, the next output somewhere else in your program will now go into the file. That's something you never want to happen. For this reason ISO-Prolog does not have tell/1 and told but rather open/3 and close/1.

查看更多
登录 后发表回答