ncurses에 텍스트 편집기를 쓰고 있습니다. 프로그램이 원시 모드로 초기화됩니다. 인쇄 할 수없는 문자를 피하기 위해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");를 사용하여 공백으로 덮어 쓰고 커서를 하나씩 백업 해 두십시오. –