2

我正在做一个编程任务,我想知道是否有人可以帮助我解决这个问题。这个任务说要在 Prolog 中编写一个程序,该程序从输入文本文件中获取文本并将其写入输出文本文件。为了获取文本文件的位置,需要提示用户写入文本文件的路径。

我已经想出了如何做到这一点,但我有一个小问题真的很烦人。这是我的代码:

main:-
    %Ask the user for the input text file and then open the file
    write('Please enter the filename you would like to read from:'),
    nl,
    read(X),
    open(X,read,In),

    %Ask the user for the output text file and then open the file
    write('Please enter the filename you would to write to:'),
    nl,
    read(Y),
    open(Y,write,Out),

    %Read in characters from the input text file and then put them
    %on the output text file.
    tell(Out),
    repeat,
    get_char(In,T),
    write(T),
    T == end_of_file, !,
    close(In),
    told,
    close(Out).

假设要读取的文本文件说“这是一个测试”。我的问题是,如果我使用程序保存此文本并将其写入另一个文本文件,它将改为写“这是一个 testend_of_file”。

我意识到发生这种情况是因为循环没有在正确的时间终止,但我不确定如何修复循环,因此“end_of_file”也不会被意外写入文本文件。任何帮助将非常感激。我觉得我什么都试过了。

4

1 回答 1

2

你首先做write(T),然后你的测试T == end_of_file,所以没有意外 end_of_file 将被写入。

尝试( T == end_of_file -> ! ; write(T), fail ),

顺便说一句,您使用的是什么 Prolog 系统?

于 2013-01-28T01:25:41.233 回答