关于#c语言#的问题:C语言光标是如何控制的

C语言光标是如何控制的,有什么作用?有没有例子

比如函数


//隐藏光标
void HideCursor()
{
    CONSOLE_CURSOR_INFO curInfo; //定义光标信息的结构体变量
    curInfo.dwSize = 1; //如果没赋值的话,光标隐藏无效
    curInfo.bVisible = FALSE; //将光标设置为不可见
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄
    SetConsoleCursorInfo(handle, &curInfo); //设置光标信息
}
//光标跳转
void CursorJump(int x, int y)
{
    COORD pos; //定义光标位置的结构体变量
    pos.X = x; //横坐标
    pos.Y = y; //纵坐标
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄
    SetConsoleCursorPosition(handle, pos); //设置光标位置
}

可参考

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7732175
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言如何隐藏光标
  • 除此之外, 这篇博客: C语言实现植物大战僵尸自动收集阳光(二) C语言控制台程序的实现中的 读写内存进程函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 用两个函数封装了读写内存的过程,只需要输入进程句柄和对应地址即可。(参数名用processid其实描述的并不准确,此处应该用参数名processh)

    //读进程内存 
    DWORD GetMemory(HANDLE processid,DWORD addr){
    	DWORD res;
    	LPCVOID pbase=(LPCVOID)addr; 
    	LPVOID buffer=(LPVOID)&res; 
    	ReadProcessMemory(processid,pbase,buffer,sizeof(DWORD),NULL);
    	return res;
    }
    
    //写进程内存 
    int SetMemory(HANDLE processid,DWORD addr,DWORD value){
    	LPVOID pbase=(LPVOID)addr; 
    	LPCVOID buffer=(LPCVOID)&value; 
    	SIZE_T res;
    	return 	WriteProcessMemory(processid,pbase,buffer,sizeof(DWORD),&res);
    }
    
  • 您还可以看一下 包东华老师的C语言贪吃蛇课程中的 设置光标位置小节, 巩固相关知识点