문제

헤이 녀석은 콘솔 앱을 보았습니다. 인쇄 색상 및 새 라인 대신 FFMPEG 인쇄 텍스트와 같은 앱을 보았습니다. 기존 라인을 통해 어떻게 인쇄합니까? 콘솔 앱에 맨 위 또는 맨 아래에 FPS를 표시하고 일반 Printf가 가서 정상적으로 스크롤하고 싶습니다.

-EDIT- Windows의 경우 필요하지만 이것은 크로스 플랫폼이기 때문에 결국 Linux 및 MAC 구현이 있습니다.

도움이 되었습니까?

해결책

Linux와 Windows에서 작동하는 두 가지 간단한 가능성이 있지만 한 줄만 있습니다.

  • printf("\b"); 하나의 캐릭터로 돌아 오므로 백 스페이스를 위해 얼마나 많은 문자를 셀 수 있고 루프에서 이것을 발사하거나, 당신은 n 숫자 만 쓰고 좋아한다는 것을 알고 있습니다.
    printf("\b\b\b\b\b\b\b\b\b\b");
  • printf("text to be overwritten by next printf\r"); 이것은 커서를 라인의 시작 부분으로 되돌리게되므로 다음 Printf가이를 덮어 씁니다. 당신이 그것을 완전히 덮어 쓰도록 같은 길이 이상의 문자열을 작성해야합니다.

여러 줄을 다시 쓰고 싶다면 그렇게 휴대용이 없습니다. ncurses, 실질적으로 모든 운영 체제에는 libs가 있으며, 당신은 ANSI 분위기를 처리 할 필요가 없습니다.

편집 : NCurses Wikipedia Page에 추가 된 링크, 훌륭한 개요 및 소개, 링크 목록 및 선호하는 언어로 번역 할 수 있습니다.

다른 팁

ncurses를 확인하십시오. 대부분의 스크립팅 언어에 바인딩이 있습니다.

당신이 사용할 수있는 '\r' 대신에 '\n'.

ASCII 문자 번호 8 (일명 CTRL-H, BS 또는 백 스페이스)을 사용하면 하나의 문자를 백업 할 수 있습니다. ASCII 문자 번호 13 (일명 CTRL-M, CR 또는 캐리지 리턴)은 라인을 구걸 할 때 커서를 반환합니다.

C에서 작업하는 경우 putchar(8); 그리고 putchar(13);

색상의 마법, 커서 찾기 및 바이킹 등이 안에 있습니다. ANSI 탈출 코드. ANSI 코드를 처리 할 수있는 모든 텍스트 콘솔은 콘솔에 인쇄하는 것만으로 사용할 수 있습니다 (즉, BASH 스크립트 또는 printf () 함수에서 ECO를 사용하여 C).

UNIX 터미널은 ANSI 이스케이프 시퀀스와 Windows World를 오래된 MS-DOS 시절에 지원하는 데 사용되는 Windows World를 지원하지만 멀티 바이트 콘솔 지원은이를 끝내게합니다. 더 많은 정보가 있습니다 여기. 그러나 ANSI 시퀀스 인쇄에는 다른 방법이 있습니다. Windows에서 사용할 수 있습니다. 또한 Windows에 Cygwin이 설치되어있는 경우 ANSI 코드가 Unix 터미널에서와 마찬가지로 작동합니다.

많은 사람들이 GUI와 같은 텍스트 기반 응용 프로그램에 대한 요소 표준 인 NCURSES 라이브러리를 언급합니다. 이 라이브러리가하는 일은 모든 플랫폼에서 가능한 한 동일한 정보를 표현하기 위해 모든 터미널 차이 (Windows/Unix Flavors)를 숨기는 것입니다. 내 자신의 경험을 통해 항상 사실은 아닙니다 (예 : 일반적인 텍스트 창 프레임 모든 문자 인코딩에서 특별한 숯을 사용할 수 없으므로 변경). NCURSE를 사용하는 대응 물은 완전한 API이며 글꼴 색상 변경, 청소 화면을 변경하거나 커서를 무작위로 옮기는 것과 같은 간단한 것들에 대한 일부 Ansi 탈출 시퀀스를 작성하는 것보다 시작하기가 훨씬 어렵다는 것입니다. 위치.

완전성을 위해 Linux에서 ANSI 시퀀스 사용의 예를 붙여서 프롬프트를 파란색으로 변경하고 날짜를 보여줍니다.

PS1="\[\033[34m\][\$(date +%H%M)][\u@\h:\w]$ "

You can use Ncurses -

ncurses package is a subroutine library for terminal-independent screen-painting and input-event handling which presents a high level screen model to the programmer, hiding differences between terminal types and doing automatic optimization of output to change one screenfull of text into another

Depending on the platform which you are developing on there's probably a more powerful API which you could use, rather than old ASCII control codes.

e.g. If you are working on Win32 you can actually manipulate the console screen buffer directly.

A good place to start might be here http://msdn.microsoft.com/en-us/library/ms683171(VS.85).aspx

I have been looking for similar functions/API which would allow me to access the console as something other than a stream of text for other platforms. Haven't found anything yet, but then again, I haven't been looking that hard.

Hope it helps.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top