如何在C控制台中居中显示文本?

如何在C控制台中居中显示文本?,c,C,作为标题。有办法吗?假设我想在屏幕中央打印“Hello World”。您可以使用该功能。获取控制台窗口的宽度和高度,然后调用它 COORD coord; coord.X = width / 2; coord.Y = height / 2; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 可以使用GoToYyYe()函数,如C++,但在C中,它不是预先定义的,所以您应该首先定义它。另一种方法是只使用制表符和换行符

作为标题。有办法吗?假设我想在屏幕中央打印“Hello World”。

您可以使用该功能。获取控制台窗口的宽度和高度,然后调用它

COORD coord;
coord.X = width / 2;
coord.Y = height / 2;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

可以使用GoToYyYe()函数,如C++,但在C中,它不是预先定义的,所以您应该首先定义它。另一种方法是只使用制表符和换行符(\t和\n…)

您需要知道字符串居中所需的空间有多宽;你需要知道绳子有多长。您可以编写适当数量的空格、字符串和换行符

#include <stdio.h>

int main(void)
{
    int width = 80;
    char str[] = "Hello world";
    int length = sizeof(str) - 1;  // Discount the terminal '\0'
    int pad = (length >= width) ? 0 : (width - length) / 2;

    printf("%*.*s%s\n", pad, pad, " ", str);
    return(0);
}
#包括
内部主(空)
{
整数宽度=80;
char str[]=“你好,世界”;
int length=sizeof(str)-1;//折扣终端“\0”
int pad=(长度>=宽度)?0:(宽度-长度)/2;
printf(“%*.*s%s\n”,pad,pad,”,str);
返回(0);
}
详尽的测试程序(最大宽度为80):

#包括
#包括
内部主(空)
{
整数宽度=80;
char-str[81];
对于(inti=1;i=width)?0:(宽度-长度)/2;
printf(“%*.*s%s\n”,pad,pad,”,str);
}
返回(0);
}

只需使用jQuery即可。[/meta]@H2CO3:真的吗?真的吗jQuery不够:PIf如果您的环境是linux,您可以看看NCourses库,该库提供了操作终端的功能(获取宽度、高度、将光标移动到某个位置、绘制窗口、颜色等)。其中的大多数使操作变得非常复杂……这假设问题的上下文是DOS控制台。这可能是有效的,但没有提供任何证据表明情况是这样。请注意,这是Windows特有的,在Linux、OSX等系统上不起作用。@mah:我正在等待对此的答复。我正在使用Windows。它确实起作用了,但我不希望语法之后的所有内容都在中心,我只希望第一行在中心。谢谢..嗯,以前用过\t和\n,但有点不合适。。谢谢你的推荐,也许吧。但需要注意的是,该功能是不可移植的。这是一件好事,不是吗?即使OP是在Windows下运行的,也应该注意到。仅仅在中心显示一些文本就太麻烦了:哦,但它真的很有用!我其实想在中间打印一个空盒子,盒子的侧面有文本。但我认为在那种情况下这是行不通的。无论如何,谢谢你!:)
#include <stdio.h>
#include <string.h>

int main(void)
{
    int width = 80;
    char str[81];
    for (int i = 1; i <= width; i++)
    {
        memset(str, 'a', i);
        str[i] = '\0';
        int length = i;
        int pad = (length >= width) ? 0 : (width - length) / 2;
        printf("%*.*s%s\n", pad, pad, " ", str);
    }
    return(0);
}