C语言之实现控制台光标随意移动
原理引入windows.h,首先是要获得输入的东西,然后通过判断:
1.方向键:执行上下左右的移动功能
2:回车键:执行换行的功能。
3.普通键:输入功能。
终点就是要获取到屏幕上的坐标,当按下了方向键以后,坐标值+1,或者减一,从而实现了光标的自由移动。
//C语言实现控制台中光标随意移动
#include <stdio.h>
#include <windows.h>
#include <conio.h> HANDLE hout;
//获得输入
char getInput()
{
int ch; //输入字符串 COORD coord; //屏幕上的坐标
CONSOLE_SCREEN_BUFFER_INFO csbi; //控制台屏幕缓冲区信息 coord.X=;
coord.Y=; ch=getch(); //0x0d表示回车,0XE0表示上下左右等键的键码
while(ch==0xE0||ch==0x0d)
{
GetConsoleScreenBufferInfo(hout,&csbi);
coord.X=csbi.dwCursorPosition.X; //得到坐标X的值
coord.Y=csbi.dwCursorPosition.Y; //得到坐标Y的值
//如果是回车
if(ch==0x0d)
{
coord.X=;
coord.Y++;
SetConsoleCursorPosition(hout,coord);
break;
}
ch=getch();
//上
if(ch==0x48)
{
if(coord.Y!=)coord.Y--;
}
//下
else if(ch==0x50)
{
coord.Y++;
}
//左
else if(ch==0x4b)
{
if(coord.X!=){coord.X--;}
}
//右
else if(ch==0x4d)
{
if(coord.X!=)coord.X++;
else
{
coord.X=;
coord.Y++;
}
}
SetConsoleCursorPosition(hout,coord);
ch=getch();
}
return ch;
}
int main()
{
char ch;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
//从键盘获取输入,如果是方向键则执行方向功能,如果是回车键则换行,如果是字符则输出
while()
{
ch=getInput();
printf("%c",ch);
}
getchar();
}

C语言之实现控制台光标随意移动的更多相关文章
- C语言实现控制台中光标随意移动
开始准备学习下C,新手哦~~ 今天弄了个控制台程序,光标可以随意在DOS下移动~~ 先放一张效果图,不过很丑,大家能不能看懂,哈哈,就是 I Love You. 代码注释都有,其实好多东西我都是从其他 ...
- .NET DLR 上的IronScheme 语言互操作&&IronScheme控制台输入中文的问题
前言 一直以来对Lisp语言怀有很崇敬的心里,<黑客与画家>对Lisp更是推崇备至,虽然看了不少有关Lisp的介绍但都没有机会去写段程序试试,就像我对C++一样,多少有点敬畏.这个周末花了 ...
- 通过C语言程序改动控制台的背景和前景颜色
本文主要解说怎样通过C语言来改动dos背景和前景颜色.我们首先来看一下dos的背景颜色的属性. 打开開始菜单,点击执行,弹出执行对话框.输入cmd,回车. (打开dos控制台) 在命令提示符界面下,输 ...
- Windows上C语言实现设置控制台的颜色
这里设置只要调用system();这个函数就行了,参数是字符串,想要设置终端的颜色,按照以下格式可以设置: //数字表示前景色,字母表示背景色 //color 0=黑色 1蓝色 2 绿色 3湖蓝色 4 ...
- 课后练习:C语言实现Linux命令——od
课后练习:C语言实现Linux命令--od --------CONTENTS-------- 题目详情与分析 设计思路 遇到的问题及解决 待实现的设想与思考 学习反思与感悟 附1:myod.c「1.0 ...
- 【C语言】控制台窗口图形界面编程(六):光标设置
目录 00. 目录 01. CONSOLE_CURSOR_INFO结构 02. GetConsoleCursorInfo函数 03. SetConsoleCursorInfo函数 04. SetCon ...
- 双缓冲解决控制台应用程序输出“闪屏”(C/C++,Windows)
使用 C 语言编写游戏的小伙伴们想必起初都要遇到这样的问题,在不断清屏输出数据的过程中,控制台中的输出内容会不断地闪屏.出现这个问题的原因是程序对数据处理花掉的时间影响到了数据显示,或许你可以使用局部 ...
- 【C语言项目】贪吃蛇游戏(上)
目录 00. 目录 01. 开发背景 02. 功能介绍 03. 欢迎界面设计 3.1 常用终端控制函数 3.2 设置文本颜色函数 3.3 设置光标位置函数 3.4 绘制字符画(蛇) 3.5 欢迎界面函 ...
- c语言表白程序代码
双十一要到了,好激动啊!!! 是时候准备出手了! 花了一天的时间写的表白代码. 表示自己弱弱的..... 看了网上好多都是js写的,感觉碉堡了!js用的不熟,前端不好,java,Python写起来 ...
随机推荐
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- sublime安装DocBlockr注释插件
点击sublime的菜单栏 view->show console :现在打开了控制台, 这个控制台有上下两栏, 上面一栏会实时显示sublime执行了什么插件,输出执行结果, 如果你安装的某个插 ...
- Javascript金额转化
//"123,456.78"----> 123456.78(float格式) function rmoney(s) { return parseFloat(s.replace ...
- PL/SQL查询Oracle数据乱码/Oracle客户端乱码解决办法
[如果此方法都试了就是不行,那么就重复尝试,先把环境变量给删了,注册表里的键值也删除了,然后重启,再配置,肯定行!我试过!] 先确定Oracle服务器采用的是何种编码: select userenv( ...
- PLSQL_性能优化系列12_Oracle Index Anaylsis索引分析
2014-10-04 Created By BaoXinjian
- apache 做http代理
1.修改 http.conf 文件 ,增加 监听端口 Listen 开启需要的扩展 LoadModule proxy_module modules/mod_proxy.so LoadModule pr ...
- jquery点击改变class并toggle;jquery点击改变图片src源码并toggle;jquery显示隐藏toggle
<html><head><meta charset="utf-8"><title></title><script ...
- java多线程之死锁
产生死锁的条件: 1.有至少一个资源不能共享2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源3.资源不能任务抢占4.必须有循环等待 只要打破其中一个条件就不会产生死锁,通常是打 ...
- UIAlertView用法
1. 最简单的用法 UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"这是一个简 ...
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
1. web service普及: Webservice soap wsdl区别之个人见解 Web Service实现业务诉求: Web Service是真正“办事”的那个,提供一种办事接口的统称. ...