I’m working on a programming assignment and I was wondering if somebody could help me out with this issue. This assignment says to write a program in Prolog which takes the text from an input text file and write it to an output text file. In order to get the location of the text files, the user needs to be prompted to write the path of the text files.
I have figured out how to do it, but I have one small issue that is really annoying. Here is my code:
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).
Let’s say the text file that is going to be read says “this is a test”. My issue is if I use the program to save this text and write it to another text file, it will write “this is a testend_of_file” instead.
I realize that this is happening because the loop isn’t being terminated at the right time, but I’m not sure how to go about fixing the loop so “end_of_file” doesn’t get accidentally written to the text file as well. Any help would be much appreciated. I feel like I’ve tried everything.
You first do
write(T), and after that your testing forT == end_of_file, so no surprise end_of_file will be written.Try
( T == end_of_file -> ! ; write(T), fail ),What Prolog system are you using, BTW?