dポイントプレゼントキャンペーン実施中!

コマンドライン上で自分が入力、確定した文字を
表示させない(残さない)ようにできる関数やコマンドはありませんか?

具体的には
fgetsで入力→printfで表示
という流れで
fgetsで入力した文字がエンターキーで確定した瞬間に消えて
その行が後に残らないようにしたいのですが…。
-echoとは違い、入力時(エンターキーでの確定前)には
通常通り表示させたいです。

どなたかご回答お願い致します。

A 回答 (2件)

Linuxでターミナルの制御を行うには、ncursesというライブラリを使用します。


ターミナル上で利用できるエディタなどで使用されるライブラリです。
#1で言われているエスケープシーケンスを扱います。

ncursesを使用する場合は、printf/fgetsのように単独で使用できません。
初期化処理などの一定の手順を取る必要があります。
詳しいことは、ncursesについて記述しているサイトを探してください。

おおよそ以下のようになるのではないかと思います。
マシン上での確認は行っていないので、誤りがあると思います。

a)initscr()で初期化
b)getsyx()で現在のカーソル位置を取得
c)getstr()で文字列を読み込み
d)setsyx()でb)で取得したカーソル位置へ移動
e)clrtoeol()でカーソル位置から行末をクリア
f)printw()で表示
g)endwin()で終了処理
    • good
    • 0

OSに依存しますが、エスケープシーケンスでできませんか?


printf("\x1b[2J"); とか
printf("\x1b[K"); など。
できなかったらごめんなさい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!