このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1322562648/163
#  [1] 授業単元:C言語による基礎 
#  [2] 問題文(含コード&リンク): 
#  以下の実行例のように,文字列を入力すると,その前 
#  後に"を付けた文字列を生成するプログラムを,ライブ 
#  ラリ関数strcpy とstrcat を用いて作成せよ.ただし, 
#  プログラムは以下の要件を満たすこととする. 
#  ? ユーザに入力させる文字列を格納する配列を 
#  str1[],前後に"を付けた文字列のための配列を 
#  str2[] とする. 
#  ? ユーザに入力させる文字列は30 字までとする. 
#  ? 配列str2[] は初期化せずに宣言し,ライブラリ関 
#  数strcpy とstrcat を使って(添字演算子[] を 
#  使わずに)前後に"を付けた文字列を生成すること. 
#   
#  

'文字列を入力すると,その前後に"を付けた文字列を生成する' :-
        '文字列を入力すると'(_文字列),
        'その前後に"を付けた文字列を生成する'(_文字列,_前後に付加された文字列),
        writef('前後に %t を付加された文字列は %t です。\n',['"',_前後に付加された文字列]).

'文字列を入力すると'(_文字列) :-
        write('文字列を入力して下さい : '),
        rawmode,
        '改行が来るか30文字に達するまで文字を入力する'(_文字,[],_文字ならび),
        norawmode,
        concat_atom(_文字ならび,_文字列).

'改行が来るか30文字に達するまで文字を入力する'(['\n'|_文字ならび_1],_文字ならび) :-
        reverse(_文字ならび_1,_文字ならび),!.
'改行が来るか30文字に達するまで文字を入力する'(_文字ならび_1,_文字ならび) :-
        length(_文字ならび_1,30),
        reverse(_文字ならび_1,_文字ならび),!.
'改行が来るか30文字に達するまで文字を入力する'(_文字ならび_1,_文字ならび) :-
        get_char(_文字),
        '改行が来るか30文字に達するまで文字を入力する'([_文字|_文字ならび_1],_文字ならび).

'その前後に"を付けた文字列を生成する'(_文字列,_前後に付加された文字列) :-
        concat_atom(['"',_文字列,'"'],_前後に付加された文字列).