このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/297
#  [1] 授業単元: プログラミング 
#  [2] 問題文(含コード&リンク): http://codepad.org/lqKLztNc 
#  
#  あるファイルtest.datの中にテキストで実数が羅列されている。この実数を読み込んで表示するプログラムkadai12-1.cを作ってみよう。
#  kadai12-1.cでは次のようなmain()を定義したとする。
#   
#  #include 
#   #include 
#   
#  void display_file(FILE *fp);
#   
#  int main() {
#           char INFILENAME[100]; //ファイル名を格納する文字列
#           FILE *in_fp;
#           scanf("%s", INFILENAME); //ファイル名をキーボード入力
#           in_fp = fopen(INFILENAME, "r"); //ファイルを開く
#           if (in_fp == NULL) {//ファイルが開けない場合はin_fpがNULLになる。(ファイルが見付からない時等)
#                   fprintf(stderr, "I cannot open %s\n", INFILENAME);//標準エラー出力にエラーメッセージを出力
#                   exit(1);
#           }
#   
#          display_file(in_fp); //ファイルの中身を全部画面表示する関数
#           fclose(in_fp); //ファイルを閉じる
#   }
#   
#  ○  上記main関数の中の void display_file(FILE *fp)を以下の仕様を満たすように定義し、kadai12-1.cを完成させなさい。
#   読み込むファイルは上記プリプロセッサで定義されたFILENAMEにある.
#   これをcat して中身を見ると、
#   cat /usr4/yamauchi/yamauchi/data/test.dat
#     1.000000  1.136735
#     1.010000  1.137647
#     1.020000  1.137143
#     1.030000  1.137957
#     1.040000  1.142641
#     1.050000  1.153101
#   .....
#  と数値が1行に2個ずつ列挙されている。これらのデータを読み取って
#   
#   1.000000
#    1.136735
#    1.010000
#    1.137647
#   ...
#   のように1行に1つずつ数値を列挙するように定義しなさい。但し、ファイルポインターがファイルの最後か否かを判定する関数として
#   int feof(FILE *fp)が準備されている。この使いかたは次で調べよ。
#   man feof
#   すると、使用方法が表示される。
#   
#  実行例:
#  gcc kadai112-1.c
#   ./a.out
#   1.000000
#    1.136735
#    1.010000
#    1.137647 
#  .....

'あるファイルtest.datの中にテキストで実数が羅列されている。この実数を読み込んで表示する' :-
        open('test.dat',read,Instream),
        repeat,
        get_split_line(Instream,[' '],_実数ならび),
        表示する(_実数ならび),
        at_end_of_stream(Instream),        
        close(Instream).

表示する([]) :- !.
表示する([A|R]) :-
        number(A),
        writef('%t\n',[A]),
        表示する(R),!.
表示する([A|R]) :-
        \+(number(A)),
        表示する(R).