このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/747
#  [1] 授業単元:C言語  
#  [2]  
#  1.コピー元のファイル名とコピー先のファイル名を指定すると、ファイルの内容をコピーするプログラムを作成せよ。コピー元のファイルが存在しない場合と、コピー先が存在する場合は、その旨のメッセージを表示し処理を中止するようにせよ。 
#  例:mycopysource.txt dest.txt 
#  →source.txtの内容がdest.txtにコピーされる。 
#  2.コマンドラインでファイル名、年、月を指定し、そのファイルにその年・月のカレンダーを出力するプログラムを作成せよ。 
#  例:calendar cal1012.txt 2010 12 
#  →ファイルcal1012.txt に2010年12月のカレンダーを出力する(このファイルも添付して提出すること) 
#   

program :-
        user_parameters([_コピー元のファイル名,_コピー先のファイル名]),
        ファイルの内容をコピー(_コピー元のファイル名,_コピー先のファイル名).

ファイルの内容をコピー(_コピー元のファイル名,_コピー先のファイル名) :-
        読み出し可能(_コピー元のファイル名),
        書き出し可能(_コピー先のファイル名),
        open(_コピー先のファイル名,read,Instream,[type(binary)]),
        open(_コピー先のファイル名,write,Outstream,[type(binary)]),
        get_byte(Instream,Code),
        ファイルの内容をコピー(Instream,Outstream,Code),
        close(Outstream),
        close(Instream),!.
ファイルの内容をコピー(_コピー元のファイル名,_コピー先のファイル名).

読み出し可能(_コピー元のファイル名) :-
        get_file_info(_コピー元のファイル名,_),
        file_test(_コピー元のファイル名,read),!.
読み出し可能(_コピー元のファイル名) :-
        \+(get_file_info(_コピー元のファイル名,_)),
        write('コピー元のファイル %t が存在しません。\n',[_コピー元のファイル名]),!,
        faii.
読み出し可能(_コピー元のファイル名) :-
        get_file_info(_コピー元のファイル名,_),
        write('コピー元のファイル %t は存在しますが読み出し不能です。\n',[_コピー元のファイル名]),!,
        fail.

書き出し可能(_コピー先のファイル名) :-
        get_file_info(_コピー先のファイル名,_),!,
        write_formatted('コピー先のファイル %t は既に存在するため作業を中止します。\n',[_コピー先のファイル名]),!,
        fail.
書き出し可能(_コピー先のファイル名) :-
        \+(get_file_info(_コピー先のファイル名,_)),
        file_test(_コピー先のファイル名,write),!.
書き出し可能(_コピー先のファイル名) :-
        write_formatted('コピー先のファイル パス %t が存在しません。\n',[_コピー先のファイル名]),!,
        fail.

ファイルの内容をコピー(Instream,Outstream,-1) :- !.
ファイルの内容をコピー(Instream,Outstream,Code) :-
        put_byte(Outstream,Code),
        get_byte(Instream,Code2),
        ファイルの内容をコピー(Instream,Outstream,Code2).