このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/177
#  [1]C言語  
#  [2]本文  
#  文字列を置換するプログラム  
#  <条件>  
#  ・右記の配列を使用 char str1[] str2[] syougou[] chikan[]  
#  ・str1を先頭からコピーしてstr2を作る  
#  このときstr1にsyougouと一致する文字列があればその文字列を見つける毎に文字列chikanに置換  
#  
#  実行例: 
#      対象文字列を入力してください(str1):aabcabb 
#      照合文字列を入力してください(syougou):ab 
#      置換文字列を入力してください(chikan):ABC 
#      結果文字列は aABCcABCb です 
# 

'str1を先頭からコピーしてstr2を作る。このときstr1にsyougouと一致する文字列があればその文字列を見つける毎に文字列chikanに置換' :-
        write('対象文字列を入力してください(str1):'),
        get_line(_str1),
        write('照合文字列を入力してください(syougou):'),
        get_line(_syougou),
        write('置換文字列を入力してください(chikan):'),
        get_line(_chikan),
        文字列を置換する(_str1,_syougou,_chikan,_str2).

文字列を置換する(_str1,_syougou,_chikan,_str2) :-
        sub_atom(_str1,_,_,_,S1,_syougou,S3,_,_,_),
        文字列を置換する(S3,_syougou,_chikan,_str3),
        concat_atom([S1,_chikan,_str3],_str2),!.
文字列を置換する(_str,_,_,_str).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

文字列を置換する(_str1,_syougou,_chikan,_str2) :-
        sub_atom(_str1,St1,Len,R,_syougou),
        sub_atom(_str1,0,St1,_,_str0),
        St3 is St1 + Len,
        sub_atom(_str1,St3,R,0,_str3),
        文字列を置換する(_str0,_str3,_syougou,_chikan,_str3),
        concat_atom([_str0,_chikan,_str3],_str2),!.
文字列を置換する(_str,_,_,_str).