2

私はプログラミングの課題に取り組んでおり、誰かがこの問題で私を助けてくれるかどうか疑問に思っていました. この課題は、入力テキスト ファイルからテキストを取得し、それを出力テキスト ファイルに書き込むプログラムを Prolog で作成することを示しています。テキスト ファイルの場所を取得するには、ユーザーにテキスト ファイルのパスを入力するよう求めるメッセージが表示される必要があります。

私はそれを行う方法を考え出しましたが、本当に厄介な小さな問題が 1 つあります。これが私のコードです:

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).

読み取ろうとしているテキスト ファイルに「これはテストです」と書かれているとします。私の問題は、プログラムを使用してこのテキストを保存し、別のテキスト ファイルに書き込むと、代わりに「this is a 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 に答える