저는 pdcurses 라이브러리를 사용하고 있으며 화면의 한 줄을 위로 이동시키는 함수를 작성하고 있습니다. 여기에는 현재 행을 복사 한 다음 위에 붙여 넣습니다. 문제는 전체 줄 인쇄를위한 curses 함수가 printf
과 같은 형식 문자열을 사용한다는 것입니다. 이 줄은 백분율 기호를 포함 할 수 있으므로 붙여 넣기를하면 그 기호는 물론 손실됩니다.printf가 서식을 무시하도록합니다.
printw() 함수는 현재 또는 지정된 커서 위치에서 창으로 포맷 된 문자열을 추가합니다. 형식 문자열은 표준 C 라이브러리의 printf()에서 사용 된 것과 동일한 입니다. (printw() 는의 printf()를위한 드롭 인 교체로 사용할 수 있습니다.)
작은 예는 다음과 같습니다
chtype p[200];
winchnstr(w, p, 200); //obtain the line
clrtoeol(); //remove the line
wmove(w, y-1, x); //move up a line
clrtoeol(); //erase the line
wprintw(w, p); //print the new line
이 비율을 치료하기 위해 printf와 강제로 어떤 방법이 있나요
p
을 거치지 않고 모든 기호 사이에 백분율 기호를 삽입하지 않고도 정상적으로 신호를 표시합니까? 그렇게 단순한 것에는 다소 성가신 것 같습니다.
첫 번째 해결 방법은 p
을 문자열로 변환하고 문자열을 반복하고 %
을 각 %
뒤에 삽입하는 것입니다. 그러나 한 번에 많은 줄을 움직이면 (화면 위쪽으로 움직이는 효과를 만들기 위해 노력하고 있습니다) 성능면에서 최고의 솔루션이 아닐 수도 있습니다.
다른 솔루션 대신 p
을 반복 그냥 개별적으로 각 문자를 추가 할 addch()
을 사용합니다. 그러나 이것은 성능/효율성이 wprintw
과 비교하여 떨어질까요? 또는 wprintw
은 단순히 각 캐릭터를 개별적으로 붙여 넣는 영광스러운 버전입니까? 이것들이 정말로 내가 가지고있는 유일한 두 가지 옵션입니까?
당신 말이 맞아요. 너무 간단한 것을 묻기 위해 약간 어리석은 느낌. 그래도 고마워. – SergeantPenguin