このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #68 # [1] 授業単元: ネットワークプログラミング # [2] 問題文(含コード&リンク): #  あなたのマシンのIPアドレスを表示しなさい # あなたのマシンのIPアドレスを表示(_IPアドレス) :- shs(ifconfig,_行ならび), '行ならびからIPアドレスを取りだす'(_行ならび,_IPアドレス). '行ならびからIPアドレスを取りだす'(_行ならび,_IPアドレス) :- member(_行,_行ならび), 'inetアドレス:の直後にIPアドレスはある'(_行,_IPアドレス). 'inetアドレス:の直後にIPアドレスはある'(_行,_IPアドレス) :- 副文字列(_行,_,'inetアドレス:',_後文字列), 副文字列(_後文字列,_IPアドレス,' ',_),!. 副文字列(_文字列,_前文字列,_副文字列,_後文字列) :- atom_concat(_前文字列,_残り文字列,_文字列), atom_concat(_副文字列,_後文字列,_残り文字列). shs(Command,X) :- popen(Command,L), 'shs:行区切り'(L,X). 'shs:行区切り'([],[]) :- !. 'shs:行区切り'(L1,L2) :- 'shs:行区切りを続ける'(L1,L2). 'shs:行区切りを続ける'(L1,L2) :- 'shs:改行の前方を切り出す'(L1,L2),!. 'shs:行区切りを続ける'(L1,[_行]) :- atom_chars(_行,L1). 'shs:改行の前方を切り出す'(L1,[S|R]) :- append(L0,['\n'|R1],L1), atom_chars(S,L0), 'shs:行区切り'(R1,R),!. popen(Command,Chars) :- open(pipe(Command),read,Instream), 'popen:一文字ずつ読み出す'(Instream,Chars), close(Instream),!. 'popen:一文字ずつ読み出す'(Instream,[]) :- at_end_of_stream(Instream),!. 'popen:一文字ずつ読み出す'(Instream,L) :- 'popen:一文字ずつ読み出して行く'(Instream,L). 'popen:一文字ずつ読み出して行く'(Instream,[Char|R]) :- get_char(Instream,Char), 'popen:一文字ずつ読み出す'(Instream,R).