curses라이브러리를 이용한 윈도우상에서의 backspace입력

jx2h의 이미지

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:

jx2h의 이미지

일단 두번째 문제는 해결되었습니다-_-;;

                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)