このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/357
#  [1] 授業単元:プログラミング 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10767.txt 
#  
# 登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し, 
# 登録人数分だけの動的メモリ確保をせよ. そして, データをファイルから入力せよ. (malloc関数を使用すること)
# ファイルの形式は, 先頭に登録する人数とし, そのあとに人数分のデータを登録番号, 名前, 年齢の順に書いていく
# (下の例を参照. 登録番号は入力順に1,2,3,4,5, …とする. そして, 入力した全員データを表示せよ.
# 
# (ファイルの例)
# 3
# 1 田中 20
# 2 大田 40
# 3 井上 35
% Prolog データファイルを作ることも問題のうちなのかな。例によってポインター云々は無視。

ファイル作成(_ファイル名) :-
        write('作成するデータ数を入力してください : '),
        get_integer(N),
        tell(_ファイル名),
        for(1,M,N),
        write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
        get_split_line([',',' '],[_名前,_年齢]),
        write_formatted(人物('%q,%q,%q).\n',[N,_名前,_年齢]),
        M = N,
        told.

ファイルから読み取ったデータを登録する(_ファイル名) :-
        consult(_ファイル名).

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

ファイル作成(_ファイル名) :-
        write('作成するデータ数を入力してください : '),
        get_integer(N),
        tell(_ファイル名),
        write_formatted('%t\n',[N]),
        for(1,M,N),
        write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
        get_split_line([',',' '],[_名前,_年齢]),
        write_formatted('%t %t %t\n',[N,_名前,_年齢]),
        M = N,
        told.

ファイルから読み取ったデータを登録する(_ファイル名) :-
        get_split_lines(_ファイル名,[' '],LL),
        LL = [_|LL2],
        'この場合、要素数(構造体の数)はいらないから',
        append(_,[[_登録番号,_名前,_年齢]|R],LL2),
        assertz(人物(_登録番号,_名前,_年齢)),
        R = [].

'この場合、要素数(構造体の数)はいらないから'.