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

时间:2013-03-09 15:35:53

标签: c

作为标题。有什么方法可以做到这一点?假设我想在屏幕中央打印“Hello World”。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您需要知道将弦线居中所需的空间有多宽;你需要知道字符串有多长。您编写了适当数量的空格,字符串和换行符。

#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):

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

答案 2 :(得分:0)

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