WriteConsoleOutput(三)

本文介绍了如何在控制台的中间位置正确显示字符串 'HELLO WORLD!'。首先展示了预期的显示效果,然后提供了实现这一效果的代码,并解答了可能遇到的常见问题,包括解释控制台中间的定义(默认80列25行)以及在VS中设置多字节字符集以解决显示问题的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 如何在控制台的中间显示  HELL WORDL!  的字符串 ?

一 显示效果:


二代码

#include <stdio.h>
#include <windows.h>
#include<string>
using namespace std;
#define LINE 12  //控制台的13行(第一行为0,第二行为1)
#define COLUNM 35 //控制台的36列(第一列为0,第二列为1)
void main()
{
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台输入句柄
CHAR_INFO CharInfo;
int i = 0;
string str = "HELLO WORLD!";
CHAR_INFO charInfoAarray[80 * 25];//缓存区大小(即控制台的大小25行80列)
COORD dwBufferSize = { 80, 25 };//固定值(控制台窗口固定的属性值)
COORD dwBufferCoord = { COLUNM, LINE };//缓冲区左上角的起始位置
SMALL_RECT rect = { COLUNM, LINE, COLUNM + 11, LINE };//显示多大的缓冲区: 大小是一个矩形(11 等于 字符串长度 减 1)
CharInfo.Attributes = FOREGROUND_RED | BACKGROUND_GREEN;//前景色为红色,背景色为绿色

for (i = 0; i<str.length(); i++)
{
CharInfo.Char.AsciiChar = str[i];//从字符串里将每个字符取出来
charInfoAarray[80 * LINE + (COLUNM + i)] = CharInfo;//80是每行最多显示的字符个数(即80列)
}
WriteConsoleOutput(hConsoleOutput, charInfoAarray, dwBufferSize, dwBufferCoord, &rect);
getchar();
}



三 常见问题

1 什么是控制台的中间?

控制台默认大小是80列25行。因此从控制台的13行36列的位置开始显示字符串。

2 为什么同样的代码运行后我的程序无法显示出"HELLO WORD"?

 需要在vs里将字符集设置成多字节字符集,如下图设置:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值