このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/74
#  [1] 授業単元:計算機実習 
#  [2] 問題文(含コード&リンク): 
#   http://ime.nu/ideone.com/V4h6ti 
#  #include
#  #include
#   
#  int main(){
#          char filename[FILENAME_MAX];
#          char buffer;
#          FILE*fp;
#   
#          strcpy(filename,"/dev/stdin");
#          if((fp = fopen(filename,"r")) == NULL){
#                  printf("ファイル%sが見つかりません。\n",filename);
#                  return(-1);
#          }
#   
#          while((buffer = fgetc(fp))!=EOF){
#                  printf("%c",buffer);
#          }
#          fclose(fp);
#  }
#  
#  1. 上記のプログラムをfgetsを使ったプログラムに書きかえなさい. 
#  fgets の書式はfgets(結果を格納する変数(配列変数なのでポインタ), 読み込むバイト数, ファイルポインタ)である. 
#   
#  2. 上記のプログラムをファイル名を「コマンドラインの引数」で指定するプログラムに変更しなさい. 
#   
#   

上記のプログラムに相当するPrologプログラム(_ファイル名) :-
        ファイルを開きstreamを確保する(_ファイル名,_Instream),
        ファイルを表示する(Instream),
        'stream解放しファイルを閉じる'(Instream).

ファイルを開きstreamを確保する(_ファイル名,_Instream) :-
        catch(open(_ファイル名,read,Instream),_,'ファイルが見つかりません。'(_ファイル名)).

ファイルを表示する(Instream) :-
        at_end_stream(Instream),!.
ファイルを表示する(Instream) :-
        get_char(Instream,Char),
        write(Char),
        ファイルを表示する(Instream).

'stream解放しファイルを閉じる'(Instream) :-
        close(Instream).

'ファイルが見つかりません。'(_ファイル名) :-
        write('ファイル%tが見つかりません。\n',[_ファイル名]),
        fail.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'strcpy(filename,"/dev/stdin");
if((fp = fopen(filename,"r")) == NULL){
        printf("ファイル%sが見つかりません。\n",filename);
        return(-1);
}'(_fp) :-
        ファイルを開きstreamを確保する('/dev/stdin',_fp).

'while((buffer = fgetc(fp))!=EOF){ printf("%c",buffer);'(_fp) :-
        ファイルを表示する(_fp).

'fclose(fp);'(_fp) :-
        'stream解放しファイルを閉じる'(_fp).