このディレクトリの索引
#  出典 :: C言語の宿題片付けます 167代目 #324
#  [1] 授業単元:プログラミング基礎
#  [2] 問題文
#  text.txtというファイルに以下のような個人情報が保存されているとする。これを読み込み、
#  実行例のように画面に出力するプログラムを作成しなさい。
#  ヒント: 氏名の読み込みでは"name: %s\n"のような変換仕様を用いると良い。 
#  ▼text.txtの内容 
#  name: Ichiro
#  age: 20
#  weight: 65.5
#  e-mail: ichiro@foo.bar 
#  ▼実行例
#  氏名: Ichiro
#  年齢: 20
#  体重: 65.5
#  Eメール: ichiro@foo.bar
#  
#  ご教示願います 

'text.txtというファイルに
▼text.txtの内容 
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar 
のような個人情報が保存されているとする。これを読み込み、
実行例のように表示する
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar' :-
        'text.txtというファイルに
▼text.txtの内容 
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar 
のような個人情報が保存されているとする。これを読み込み、'(Lines),
        '実行例のように表示する
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar'(Lines).

'text.txtというファイルに
▼text.txtの内容 
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar 
のような個人情報が保存されているとする。これを読み込み、'(_行ならび) :-
        get_lines('text.txt',_行ならび).

'実行例のように表示する
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar'(_行ならび) :-
        append(_,[_行|_残り行ならび],_行ならび),
        実行例のように(_行,_変換された行),
        表示する(_変換された行),
        _残り行ならび = [].

実行例のように(_行,_変換された行) :-
        文字列変換候補(_変換対象文字列,_変換文字列),
        sub_atom(_行,_前文字列の長さ,_,_後文字列の長さ,_変換対象文字列),
        変換された文字列を構成する(_行,_変換文字列,_前文字列の長さ,_後文字列の長さ,_変換された文字列),!.
実行例のように(_行,_行).

変換された文字列を構成する(_行,_変換文字列,_前文字列の長さ,_後文字列の長さ,_変換された文字列) :-
        sub_atom(_行,0,_前文字列の長さ,_,_前文字列),
        sub_atom(_行,_,_後文字列の長さ,0,_後文字列),
        atomic_list_concat([_前文字列,_変換文字列,_後文字列],_変換された行),!.

文字列変換候補(name,氏名).
文字列変換候補(age,年齢).
文字列変換候補(weight,体重).
文字列変換候補('e-mail','Eメール').

表示する(_変換された行) :-
        writef('%t\n',[_変換された行]).