1

入力ループを含むプロローグ プログラムを作成しています。入力の大部分は、応答ファイルに事前にスクリプト化されています。として実行しprolog < response.txtます。応答ファイルが終了したら、キーボードのユーザー入力を介してプログラムを続行したいと考えています。ただし、応答ファイルが終了すると、キーボードから /1 を読み取るのではなくend_of_file、入力として無限ループで読み取りを続けます。

パイプがファイルの最後に到達したら、ユーザーが入力した入力にプログラムを戻したいと思います。どうすればいいですか?

前もって感謝します。

4

1 に答える 1

0

入力ストリームを調べてリダイレクトすることができます。

どのバージョンの Prolog を使用しているかはわかりませんが、SWI-Prolog には入力ストリームをリダイレクトする方法がたくさんあります。

入力がキーボードからの場合、次のTTYようになりますtrue

current_input(Stream), stream_property(Stream, tty(TTY)).

入力がファイルからのものである場合、Filenameそれぞれのファイル入力の名前は現在次の場所から読み取られます:

current_input(Stream), stream_property(Stream, file_name(Filename)).

を述語Streamで入力として使用するように設定できます。set_input/1

{obtain a Stream handle}, set_input(Stream).

キーボード入力ストリームを要求する方法をまだ理解していないため、これに基づいて構築できることを願っています。

実行している OS を特定し、OS ごとに異なる方法を設定して、入力をキーボード ストリームに設定する必要がある場合があります。

于 2012-12-28T11:16:58.260 に答える