텍스트를 화면 중앙에 배치하기 위해 변경해야 할 사항 [닫기]

텍스트를 화면 중앙에 배치하기 위해 변경해야 할 사항 [닫기]

다음 절차에 따라 화면이 지워집니다.

#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;
}    

관련 정보