作为标题。有什么办法可以解决问题吗?假设我想在屏幕中央打印“Hello World”。
问问题
23280 次
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 回答