このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/298
#  [1] 授業単元: プログラミング  
#  [2] 問題文(含コード&リンク): http://codepad.org/iM41ba88  
#  
#  [問2]上記プログラムを拡張して、読み込んだデータにある変換を施して別のファイルに保存するプログラムkadai12-2.cを作ろう。kadai12-1.cで読み込んだファイルを改めて眺めると、1行に2つの数値が書いてある。この各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する関数 void convert_data(FILE *in_fp, FILE *out_fp)を定義し、この動作を確認するプログラムkadai12-2.cを作りなさい。ただし、void convert_data(FILE *in_fp, FILE *out_fp)はin_fpからデータを読み取って、out_fpに書き込むものとする。
#   
#  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
#   .....
#   
#  ヒント: kadai12-2.cのmain()の例:みどりの文字がkadai12-1に新しく加えた部分
#   
#  int main() {
#           char INFILENAME[100];//読み込みファイル名
#           char OUTFILENAME[100];//書き込みファイル名
#          FILE *in_fp;//読み込み用ファイルポインタ
#           FILE *out_fp;//書き込み用ファイルポインタ
#          
#         
#          scanf("%s", INFILENAME); //読み込みファイル名をキーボード入力
#           scanf("%s", OUTFILENAME); //書き込みファイル名をキーボード入力
#   
#          in_fp = fopen(INFILENAME, "r"); //ファイルを開く
#          if (in_fp == NULL) {//ファイルが開けない場合はin_fpがNULLになる。(ファイルが見付からない時等)
#                   fprintf(stderr, "I cannot find %s\n", INFILENAME);//標準エラー出力にエラーメッセージを出力
#                  exit(1);
#           }
#   
#          out_fp = fopen(ファイル名の文字列, モード);//<-各自正しく書き換えるように。
#            if (out_fp==NULL) {
#                   ほげほげほげ  <-各自正しく書き換えること
#            }
#  
#           convert_data(in_fp, out_fp); //in_fpからデータを読み取り、値を変換したものをout_fpに書き込む関数
#           fclose(in_fp); //ファイルを閉じる
#           fclose(out_fp); //ファイルを閉じる
#  }
#  
#  ただし:
#   ○変換されて保存されたファイルの中身は次のフォーマットに従うものとする。
#  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...
#   つまり、fprint(書き込み用ファイルポインタ, "%f %f\n", データ, データ);を使って出力します。
#  
#   

'読み込んだデータにある変換を施して別のファイルに保存する' :-
        see('test.txt'),
        tell('test2.txt'),
        readln(L,_終了状態),
        '各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'(L,_終了状態),
        told,
        seen.

'各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'(_,end_of_file) :- !.
'各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'([A,B],_) :-
        C is B ^ 2,
        writef('%t\n',[C]),
        readln(L2,_終了状態2),
        '各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'(L2,_終了状態2),!.
'各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'(_,_) :-
        readln(L2,_終了状態2),
        '各行の2番め(右端)の数値を「2乗したもの」に置き換えて別のファイルに保存する'(L2,_終了状態2),!.