curses라이브러리를 이용한 윈도우상에서의 backspace입력
글쓴이: jx2h / 작성시간: 목, 2005/01/20 - 5:26오후
entry라는 윈도우가있고 그 윈도우상에서
키보드로부터 케릭터를 하나씩 수집하면서
수집한키가 개행인지 백스페이스인지 여부를 검사하고
개행일때까지 화면에 출력 & string배열에 쌓는 루틴입니다
while(1)
{
ch = wgetch(entry);
if(ch == '\n') break;
if(ch != '\b')
{
string[l] = ch;
l++;
wmove(entry, 2, i);
winsch(entry, (chtype*)string[l-1]);
i++;
wrefresh(entry);
}
else
{
l--;
string[l] = 'NULL';
i--;
wmove(entry, 2, i);
winsch(entry, (chtype*)string[l]);
wrefresh(entry);
}
}
문제는 백스페이스를 누르면 '\b'이 아니라 쓰레기가 들어갑니다
백스페이스를 어떻게 구분하는것이 좋겠습니까?
그리고 else문에서 string[l]이부분을 NULL로 치환하는데
치환이 안돼고 string[l] 뒤에있는 원소들이 한칸씩 밀려버리더군요-_-;
좋은해결책 좀 제시해주시기 바랍니다 :cry:
Forums:


일단 두번째 문제는 해결되었습니다-_-;;[code:1]
일단 두번째 문제는 해결되었습니다-_-;;
else { l--; // string[l] = 'NULL'; string[l] = NULL; i--; wmove(entry, 2, i); winsch(entry, (chtype*)string[l]); wrefresh(entry); }그런데 또 entry에 찍을땐 문자가 깨지고 string을 찍어보면 제대로 들어가있고...winsch()에 문제가있는걸일까ㅠㅠ
dead or alive(0 or 1)
댓글 달기