このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/726
#  [1] 授業単元:プログラミング  
#  [2] 問題文(含コード&リンク):  
#  キーボードから入力した10文字以内の任意の文字列の中で、 
#  ある特定の文字が最初に表れる位置からそれ以降の部分文字列を返す関数 
#  char *cut_str(char *address1, char target_char)を定義し、 
#  その動作を確認するkadai7-2.cを作りなさい。 
#  ただし、文字列と、ある特定の文字の入力は、 
#  char str[10], target_char; 
#  scanf("%s %c", str, &target_char); 
#  で入力されるものとして、 
#  答えは以下で出力されるものとする。 
#  printf("answer = %s\n", cut_str(str, target_char)); 
#    
#  

'キーボードから入力した10文字以内の任意の文字列の中で、ある特定の文字が最初に表れる位置からそれ以降の部分文字列を返す'(_ある特定の文字が最初に表れる位置からそれ以降の部分文字列) :-
        キーボードから入力した10文字以内の任意の文字列とある特定の文字を入力する(_文字列,_ある特定の文字),
        sub_atom(_文字列,S,_,_,_ある特定の文字),
        sub_atom(_文字列,S,_,0,_ある特定の文字が最初に表れる位置からそれ以降の部分文字列).

キーボードから入力した10文字以内の任意の文字列とある特定の文字を入力する(_文字列,_ある特定の文字) :-
        write('10文字以内の任意の文字列とある特定の文字を空白区切りで入力してください : '),
        get_line(Line),
        文字列入力診断(Line,_文字列,_ある特定の文字),!.
キーボードから入力した10文字以内の任意の文字列とある特定の文字を入力する(_文字列,_ある特定の文字) :-
        キーボードから入力した10文字以内の任意の文字列とある特定の文字を入力する(_文字列,_ある特定の文字).

文字列入力診断(Line,_文字列,_ある特定の文字) :-
        split(Line,[' ',','],[_文字列,_ある特定の文字]),
        atom(_文字列),
        sub_atom(_ある特定の文字,0,1,0,_ある特定の文字),
        sub_atom(_文字列,_,_文字列の長さ,_,_文字列),
        文字列の長さ診断(_文字列,_文字列の長さ),!.
文字列入力診断(Line,_,_) :-
        writef('入力された %t から適切な情報が得られません。再入力をお願いします。\n',[Line]),
        fail.

文字列の長さ診断(_文字列,_文字列の長さ) :-
        _文字列の長さ =< 10,!.
文字列の長さ診断(_文字列,_文字列の長さ) :-
        writef('入力された文字列 %t は%t文字あります。10文字以下の長さで再入力をお願いします\n',[Line,_文字列の長さ]),
        fail.