在螢幕的任意位置輸出字元
阿新 • • 發佈:2021-02-01
技術標籤:C/C++
因為用到了 Windo游標定位需要使用 windows.h 標頭檔案中的SetConsoleCursorPosition
函式,它的使用方式為:
SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition);
hConsoleOutput
表示控制檯緩衝區控制代碼,可通過GetStdHandle(STD_OUTPUT_HANDLE)
來獲得;dwCursorPosition
是游標位置,也就是第幾行第幾列,它是 COORD 型別的結構體。ws 作業系統的功能,所以本節的程式碼不能在 Linux 和 Mac OS 下執行。
例如,將游標定位到控制檯的第3行第3列:
//定義游標位置
COORD coord;
coord.X = 3; //第3行
coord.Y = 3; //第3列
//獲取控制檯緩衝區控制代碼,固定寫法
HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
//設定游標位置,固定寫法
SetConsoleCursorPosition(ConsoleHandle, coord);
#include <stdio.h> #include <windows.h> int main(){ //定義游標位置 COORD coord; coord.X = 3; //第3行 coord.Y = 3; //第3列 //獲取控制檯緩衝區控制代碼 HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); //設定游標位置 SetConsoleCursorPosition(ConsoleHandle, coord); printf("http://c.biancheng.net\n"); return 0; }
執行結果:
注意:視窗的左上角是第 0 行第 0 列,而不是我們通常所認為的第 1 行第 1 列。程式語言中的很多計數都是從 0 開始的,而不是從 1 開始。
#include <stdio.h> #include <windows.h> //設定游標位置 void setCursorPosition(int x, int y); //設定文字顏色 void setColor(int color); int main(){ setColor(3); setCursorPosition(3, 3); puts("★"); setColor(0XC); setCursorPosition(1, 1); puts("◆"); setColor(6); setCursorPosition(6, 6); puts("■"); return 0; } //自定義的游標定位函式 void setCursorPosition(int x, int y){ COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } //自定義的文字顏色函式 void setColor(int color){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color) ; }