CLIの対話型プログラムにおいてbashやghciの様なヒストリ機能を実装するにはどうすればよいでしょうか。
言語はCで、readlineは使わずに実装したいです。
具体的な動作としては、文字列を打ち込み、エンターキーで入力した後アローキーの↑を押すと打った文字列が次の行に表示されるようにしたいです。
よろしくお願いします。
対話型プログラムにヒストリ機能を付けたい
- namachan10777
- 記事: 32
- 登録日時: 10年前
- 住所: 四国
- 連絡を取る:
対話型プログラムにヒストリ機能を付けたい
D言語!D言語!
Re: 対話型プログラムにヒストリ機能を付けたい
さっき検索しながら適当に作ったので、使用性に欠けますが。
要するにこういうことでしょうか?
要するにこういうことでしょうか?
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 対話型プログラムにヒストリ機能を付けたい
標準的な機能ではキーボード入力と固定された入力をサポートしない上に,
通常キーボードが接続される標準入力に対して,バッファリングされない入力は存在しません。
このため,環境を指定してもらわない限り,
「標準Cの範囲内では(未定義・未規定・処理系定義動作を使わずに)実装することは無理」と答えざるを得ません。
通常キーボードが接続される標準入力に対して,バッファリングされない入力は存在しません。
このため,環境を指定してもらわない限り,
「標準Cの範囲内では(未定義・未規定・処理系定義動作を使わずに)実装することは無理」と答えざるを得ません。
Re: 対話型プログラムにヒストリ機能を付けたい
うーん,書いていてバッファリングされない入力というのがset(v)bufの話と勘違いされそうな気がしたので,一応。
set(v)bufしても,キーボード入力のバッファリングは必ずしもなくなりません。
元々,最初の入力の前にset(v)bufしなければいけないという制限が付いてきていますが……。
このあたり(カーソルキーの入力含めて),大昔からのFAQですね……。
http://www.kouno.jp/home/c_faq/c19.html
set(v)bufしても,キーボード入力のバッファリングは必ずしもなくなりません。
元々,最初の入力の前にset(v)bufしなければいけないという制限が付いてきていますが……。
このあたり(カーソルキーの入力含めて),大昔からのFAQですね……。
http://www.kouno.jp/home/c_faq/c19.html
- namachan10777
- 記事: 32
- 登録日時: 10年前
- 住所: 四国
- 連絡を取る:
Re: 対話型プログラムにヒストリ機能を付けたい
>>Yuoさん
標準Cでは出来ないのですね。
>>amehirune
そういう動作を想定していました。
標準Cでは実現することが出来ないとのことなのでncursesかtermiosを使いたいと思います。ありがとうございます。
標準Cでは出来ないのですね。
>>amehirune
そういう動作を想定していました。
標準Cでは実現することが出来ないとのことなのでncursesかtermiosを使いたいと思います。ありがとうございます。
D言語!D言語!