ncursesにテキストエディターを作成しています。プログラムはrawモードで初期化されます。印刷不可能な文字を回避するためにncursesでターミナルですでに印刷されている文字を削除する
void console(ch)
{
if(ch == 8) //8 = backspace according to asciitables.com
{
printw("\b");
printw(" ");
}
else
{
addch(ch);
}
}
:だから私は
削除についてなど、非印字可能な文字を印刷回避、手動で削除のような多くのことを行う必要があり
void console(ch)
{
bool safe = TRUE;
int avoid[] = { 1,2,3,4,5,6,7,8};
for(int i=0;i<4;i++)
{
while(ch==avoid[i])
{
safe = false;
}
}
if(safe)
{
printw("%c",ch); //Prints the key's characters on the screen.
}
else
{
break;
}
}
削除では、端末で以前に印刷された文字を削除し、空白スペースを挿入して、カーソルを前の文字の場所に戻したいと思っていました。しかし、それは動作しません。
印刷できない文字を避けるには、印刷できない文字を避け、印刷可能な文字だけを印刷したいと考えました。しかし、それはうまくいかないようです。
私が間違っている箇所を誰かが指摘してくれたら非常に役に立ちます。もし誰かがncursesライブラリにこれに関する特定の機能があるかどうか教えてもらえると便利です。私はncursesにはかなり新しいです。
"stdout"ではなく、端末に印刷しています。特にcursesベースのプログラムを作成している場合は、stdoutを端末とコンバートしないでください。 –
それを変更しました。しかし、どこが間違っているのか教えてください。 –
どのように正確に動作しませんか? 'printw(" \ b ")'がうまくいけば、 'printw(" \ b \ b ");'をスペースで上書きし、カーソルを1つだけバックアップしたままにしておきます。 –