다음 절차에 따라 화면이 지워집니다.
#include <stdio.h>
int main()
{
fputs("\033[2J", stdout);
return 0;
}
그렇다면 화면 중앙에 문자열을 넣으려면 위 코드에서 무엇을 수정/추가해야 할까요?
참고: 화면 크기는 행=25, 열=80입니다.
답변1
화면의 중앙에 텍스트를 배치하려면 a = 표시되는 문자 기준으로 인쇄하려는 텍스트의 너비, b = 표시되는 문자 기준으로 화면의 너비를 알아야 합니다. 그런 다음 문자열 앞에 인쇄합니다. 2 - a/2) 버퍼링된 공백 문자.
이 로직은 다른 관련 비트와 함께 curses
라이브러리에서 처리됩니다. 활용해 보시길 권해드립니다.
답변2
다음은 귀하에게 적합한 대략적인 접근 방식입니다. 먼저 터미널 크기를 검색하고 문자열의 위치를 계산해야 합니다.
#include <iostream>
#include <cstring>
#include <sys/ioctl.h>
using namespace std;
void output_middle (const char *s, int term_cols)
{
cout << string ( (term_cols - strlen(s)) >> 1, ' ') << s << endl;
}
int main ( int argc , char **argv )
{
struct winsize w;
ioctl(0, TIOCGWINSZ, &w);
output_middle ("some string", w.ws_col);
return 0;
}
답변3
#include <stdio.h>
#include <string.h>
static void print_middle(int rows, int cols)
{
int vt = rows/2,
ht = 0;
char *message = "Please wait, Copying from network ...";
ht = (cols - strlen(message))/2;
fputs("\033[2J", stdout);
printf("%c[%d;%df", 0x1B, ht, vt);
printf("%s", message);
}
int main()
{
print_middle(25, 80);
return 0;
}