如何在C/C++中定义坐标函数gotoxy()并灵活运用之 您所在的位置:网站首页 坐标查找函数怎么用 如何在C/C++中定义坐标函数gotoxy()并灵活运用之

如何在C/C++中定义坐标函数gotoxy()并灵活运用之

2024-07-10 07:56| 来源: 网络整理| 查看: 265

目录: 1、坐标函数的定义和使用2、坐标函数各部分释义3、坐标函数的特点和灵活运用

1、坐标函数的定义和使用

其实C中没有这个坐标函数,所以要自己定义,而自己定义就不一定叫gotoxy(),moveto()或position()等等自己起什么名字都可以。

首先是嵌入相关头文件的指令:#include 然后在主函数外定义此坐标函数,像这样:

void gotoxy(int x,int y) { COORD p ; p.X=x; p.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p); }

void gotoxy(int x,int y) { COORD p={x,y};//p是一个结构体可这样赋值,有的编译器可能报错但可以运行。 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p); }

void gotoxy(int x, int y) { COORD pos; HANDLE output; pos.X = x; pos.Y = y; output = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(output, pos); }

最后在主函数内再声明一下就行了,如:

#include #include int main() { int i=5; void gotoxy(int x,int y);//主函数内声明函数。 gotoxy(1,4); printf("%d",i); gotoxy(1,i); printf("%d",i); return 0; } void gotoxy(int x,int y) { COORD p ; p.X=x-1; p.Y=y-1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p); }

或者主函数内不声明也行,把坐标函数放到主函数前面,如:

#include #include void gotoxy(int x,int y) { COORD p ; p.X=x-1; p.Y=y-1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p); } int main() { int i=5; gotoxy(4,4); printf("%d",i); gotoxy(i,i); printf("%d",i); return 0; } 2、坐标函数各部分释义

整个gotoxy()函数涉及两个数据类型类型和两个函数:

1、COORD是Windows API中定义的一种结构。其实就是一种用结构体定义的数据类型,内含两个X、Y用来表示坐标。

2、HANDLE是一个通用句柄表示。(句柄是什么大家有兴趣的可以自行去了解)

3、GetStdHandle是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄,参数可以是以下值之一:

值含义STD_INPUT_HANDLE标准输入的句柄STD_OUTPUT_HANDLE标准输出的句柄STD_ERROR_HANDLE标准错误的句柄

4、SetConsoleCursorPosition是API中的函数,作用是定位光标位置。SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);语句的意思就是:定位光标位置的函数,坐标为GetStdHandle()返回标准的输出的句柄,也就是获得输出屏幕缓冲区的句柄,并赋值给对象p。

3、坐标函数的特点和灵活运用 COORD p ; p.X=x; p.Y=y;

其中p.X是横坐标,方向向右;p.Y是纵坐标,方向向下。gotoxy(0,0)就表示左上角的开头位置。

如果这样定义:

COORD p ; p.X=x-1; p.Y=y-1;

输入gotox(1,1),就转换为p.X=0,p.Y=0,还是表示开头位置。

如果配合二维数组使用,可以交换x、y位置,如:

COORD p ; p.X=y; p.Y=x;

输入gotoxy(i,j)就可以很好对应相应数组的位置。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有