c_cpp 将ANSI字符输出到Windows控制台
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将ANSI字符输出到Windows控制台相关的知识,希望对你有一定的参考价值。
#include <Windows.h>
void ScrollUp(HANDLE hOut, const CONSOLE_SCREEN_BUFFER_INFO& csbi)
{
SMALL_RECT r = { 0, 1, csbi.dwSize.X - 1, csbi.dwSize.Y - 1 };
CHAR_INFO fill = { csbi.wAttributes, ' ' };
COORD p = { 0, 0 };
ScrollConsoleScreenBuffer(hOut, &r, nullptr, p, &fill);
}
void NewLine(HANDLE hOut)
{
CONSOLE_SCREEN_BUFFER_INFO csbi = {};
GetConsoleScreenBufferInfo(hOut, &csbi);
csbi.dwCursorPosition.X = 0;
if (csbi.dwCursorPosition.Y == csbi.dwSize.Y)
ScrollUp(hOut, csbi);
else
++csbi.dwCursorPosition.Y;
SetConsoleCursorPosition(hOut, csbi.dwCursorPosition);
}
int main(int argc, char* argv[])
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hOut, &mode);
SetConsoleMode(hOut, mode & ~ENABLE_PROCESSED_OUTPUT);
if (argc <= 1)
{
const BYTE len = 32;
for (int j = 0; j < 255; j += len)
{
char msg[len];
for (BYTE i = 0; i < len; ++i)
msg[i] = i + (BYTE) j;
DWORD written = 0;
WriteConsole(hOut, msg, len, &written, nullptr);
NewLine(hOut);
}
}
else
{
DWORD len = argc - 1;
char msg[1024];
for (int j = 1; j < argc; ++j)
msg[j - 1] = atoi(argv[j]);
DWORD written = 0;
WriteConsole(hOut, msg, len, &written, nullptr);
}
SetConsoleMode(hOut, mode);
return 0;
}
以上是关于c_cpp 将ANSI字符输出到Windows控制台的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 将utf8文件输出到控制台
如何使用 ANSI Escape 代码在控制台上输出彩色文本
原创python中文编码问题:控制窗口能输出中文,到文本文件里乱码
WinAPI FTPGetFile 从 ANSI 到 Unicode 的转换
在 Windows 中使用 C++ 将 Unicode 输出到控制台
将文本装饰添加到控制台输出