我正在编写一个编程任务,我想知道是否有人可以帮我解决这个问题。这个赋值表示在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”不会被意外写入文本文件好。任何帮助将非常感激。我觉得我已经尝试了一切。
答案 0 :(得分:2)
您首先执行write(T)
,然后对T == end_of_file
进行测试,因此不会出现意外的end_of_file。
尝试( T == end_of_file -> ! ; write(T), fail ),
您使用什么Prolog系统,BTW?