需要更改什么才能将文本放置在屏幕中央

需要更改什么才能将文本放置在屏幕中央

以下程序将清除屏幕

#include <stdio.h>
int main()
{
    fputs("\033[2J", stdout);
    return 0;
}

那么,我应该在上面的代码中修改/添加什么才能将文本字符串放在屏幕中间?

注意:屏幕尺寸为:行=25,列=80

答案1

为了将文本放在屏幕中央,您需要知道 a = 您要打印的文本有多宽(以可见字符术语表示); b = 屏幕有多宽(以可见字符计);然后在字符串之前打印 (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;
}    

相关内容