0

作为标题。有什么办法可以解决问题吗?假设我想在屏幕中央打印“Hello World”。

4

3 回答 3

2

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

#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);
}
于 2013-03-09T17:03:50.920 回答
1

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

COORD coord;
coord.X = width / 2;
coord.Y = height / 2;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
于 2013-03-09T15:40:16.900 回答
-1

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

于 2013-03-09T16:26:57.707 回答