このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1292333005/641
#  Cでバイナリファイル内の置き換えについて質問です 
#   
#  74 65 73 74 (test) を検索して別の値に変換するつもりですが 
#  どのように処理したらいいでしょうか? 
#  74 がでてくるまで1バイトずつ読み込んでいくのか 
#  ファイルを全部メモリに読み込んでから検索するのか 
#  バイナリ操作が初めてなのでどうのようにするのがいいのでしょうか 
#   

'バイナリファイル内の置き換え'(_ファイル,_別の値ならび) :-
        get_bytes(_ファイル,Bytes),
        '74 65 73 74 (test) を検索して別の値に変換する'(Bytes,_別の値ならび,Bytes2),
        put_bytes(_ファイル,Bytes2).

'74 65 73 74 (test) を検索して別の値に変換する'(Bytes1,_別の値ならび,Bytes1) :-
        \+(append(L0,[74,65,73,74|R],Bytes1)),!.
'74 65 73 74 (test) を検索して別の値に変換する'(Bytes1,_別の値ならび,Bytes2) :-
        append(L0,[74,65,73,74|R],Bytes1),
        '74 65 73 74 (test) を検索して別の値に変換する'(R,_別の値ならび,Bytes3),
        append(L0,_別の値ならび,Bytes3,Bytes2).

get_bytes(_ファイル,Bytes) :-
        open(_ファイル,read,Instream,[type(binary)]),
        findall(Byte,(
                    repeat,(
                        at_end_of_stream(Instream),
                        !,
                        fail;
                        get_byte(Instream,Byte))),
                Bytes),
        close(Instream),!.

put_bytes(_ファイル,Bytes) :-
        open(_ファイル,write,Outstream,[type(binary)]),
        append(_,[Byte|R],Bytes),
        put_byte(Outstream,Byte),
        R = [],
        close(Outstream),!.