このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/784
#  [1] 授業単元:C 言語 
#  [2] 問題文(含コード&リンク):  
#  http://ime.nu/codepad.org/JrW6n1Q3  
#  上記プログラムで作成したファイルを読み込んで中身を次のフォーマットで表示する関数 
#   void display_b(FILE *in_fp); 
#   を作成し、その動作を確認するプログラムkadai11-2.cを作りなさい。 
#   ただし、ファイル名はプロトタイプ宣言で指定すること。 
#   また、出力は以下の出力例に示すフォーマットで画面出力されるものとする。 
#    
#  gcc kadai11-2.c 
#   ./a.out 
#   1.000000 1.292166 
#   1.010000 1.294241 
#   1.020000 1.293094 
#   1.030000 1.294946 
#   1.040000 1.305628 
#   1.050000 1.329642 
#   1.060000 1.368... 
#    

'ファイルを読み込んで中身を整形したフォーマットで表示する' :-
        フォーマットを推測する(' 1.000000 1.292166',_表示フォーマット),
        ファイルを読み込んで(LL),
        get_split_lines('test_bin.dat',LL),
        整形したフォーマットで表示する(_表示フォーマット,LL).

ファイルを読み込んで(LL) :-
        get_split_lines('test_bin.dat',[' '],LL).

整形したフォーマットで表示する(_表示フォーマット,[]).
整形したフォーマットで表示する(_表示フォーマット,[_要素ならび|R]) :-
        writef(_表示フォーマット,_要素ならび),
        整形したフォーマットで表示する(_表示フォーマット,R).

フォーマットを推測する(_文字列,_表示フォーマット) :-
        要素ならびとして取り出す(_文字列,_要素ならび),
        フォーマット要素を推測する(_要素ならび,_表示フォーマットならび),
        atomic_list_concat(_表示フォーマットならび,_表示フォーマット).

フォーマット要素を推測する([],['\n']) :- !.
フォーマット要素を推測する([''|R1],R2) :-
        フォーマット要素を推測する(R1,R2),!.
フォーマット要素を推測する([_要素|R1],[F|R2]) :-
        要素は浮動小数点数(_要素,F),
        フォーマット要素を推測する(R1,R2),!.
フォーマット要素を推測する([S|R1],[S|R2]) :-
        sub_atom(S,0,1,_,' '),
        フォーマットを推測する(R1,R2),!.
フォーマット要素を推測する([S|R1],['%t'|R2]) :-
        フォーマットを推測する(R1,R2).

要素は浮動小数点数(_要素,F) :-
        sub_atom(_要素,S,1,_残り文字数,'.'),
        sub_atom(_要素,0,S,_,_小数点以上文字列),
        atomic_list_concat(['~',_残り文字数,f],F),!.

要素ならびとして取り出す(_文字列,[S1,S2|R1]) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        'S2は空白に挟まれている'(L1,L2,L3),
        要素ならびとして取り出す(S3,R1),!.
要素ならびとして取り出す(_,[]) :- !.

'S2は空白に挟まれている'(L1,L2,L3) :-
        all(L1,' '),
        \+(member(' ',L2)),
        \+((L3 = [A|_],\+(A=' '))),!.