C语言如何制作简易金山打字通功能
小编给大家分享一下C语言如何制作简易金山打字通功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
本小项目最终的实现如下:
输入相应的字符,然后在最下面能够统计错误的个数,输入字符总个数,输入个数以及错误率。
那如何来实现这个小项目呢?规划如下,我们需要大致实现以下三个模块:
(1)输入模块
(2)显示模块
(3)统计模块
实现过程:
使用getch()
函数可以获取键盘输入的字符,显示可以使用Window自带的API来实现,统计就很简单了,就是计算输入字符的个数等等。。。接下来就是简单的软件逻辑的实现。
源码如下:
#include#include #include #include #include #defineNR(x)sizeof(x)/sizeof(x[0]) //清屏 #defineClearScreen()\ system("cls"); #defineTITLE"金山打字通" enum { LEFT=1, RIGHT, BACKSPACE, ESC, Char, }; enumKEYBOARD { ESC_KEY=27, BACKSPACE_KEY=8, LEFT_KEY=75, RIGHT_KEY=77 }; intiindex=0; intmax=0; staticintcount=0; charbuffer[1024]={0}; intGet_User_input(HANDLEhOut,char*ch); voidShow_string(HANDLEhOut,constchar*text); //窗口初始化 voidHANDLE_init(HANDLEhOut); //定义设置光标结构体变量 CONSOLE_CURSOR_INFOcci; //定义默认的坐标位置 COORDpos={0,0}; intmain(void) { char*text="WelCometoSchool...GoodGoodWork,DayDayUp!"; charch; intret; HANDLEhOut; hOut=GetStdHandle(STD_OUTPUT_HANDLE); HANDLE_init(hOut); printf("\n%s\n",text); Show_string(hOut,text); while(1) { if(max>=strlen(text)) break; ret=Get_User_input(hOut,&ch); if(ret==ESC) break; Show_string(hOut,text); } //关闭窗口句柄 CloseHandle(hOut); return0; } //窗口初始化 voidHANDLE_init(HANDLEhOut) { SetConsoleTitleA(TITLE); //获取当前的句柄---设置为标准输出句柄 //获取光标信息 GetConsoleCursorInfo(hOut,&cci); //设置光标大小 pos.X=0; pos.Y=2; cci.dwSize=1; //设置光标不可见FALSE cci.bVisible=0; //设置(应用)光标信息 SetConsoleCursorInfo(hOut,&cci); } staticint__Get_User_input(HANDLEhOut,char*ch) { chartmp; inttype=Char; //关闭回显 pos.X=0; pos.Y=2; GetConsoleCursorInfo(hOut,&cci); cci.dwSize=100; cci.bVisible=0; SetConsoleCursorInfo(hOut,&cci); tmp=getch(); switch(tmp) { caseESC_KEY:type=ESC;break; caseBACKSPACE_KEY:type=BACKSPACE;break; caseLEFT_KEY:type=LEFT;break; caseRIGHT_KEY:type=RIGHT;break; } *ch=tmp; //打开回显 pos.X=0; pos.Y=2; GetConsoleCursorInfo(hOut,&cci); cci.dwSize=100; cci.bVisible=1; SetConsoleCursorInfo(hOut,&cci); returntype; } //获取用于输入 intGet_User_input(HANDLEhOut,char*ch) { inttype; type=__Get_User_input(hOut,ch); switch(type) { caseChar: if(buffer[iindex]=='\0') buffer[iindex]=*ch; else { memmove(buffer+iindex+1,buffer+iindex,max-iindex); buffer[iindex]=*ch; } iindex++;max++;break; //caseLEFT:if(iindex>0)iindex--;break; //caseRIGHT:if(iindex 0){ memmove(buffer+iindex-1,buffer+iindex,max-iindex); iindex--; max--; } if(iindex==0) { count=0; } break; caseESC:returnESC; } return0; } //显示和统计 voidShow_string(HANDLEhOut,constchar*text) { system("cls"); printf("\n%s\n",text); inti; interrno_Num=0; for(i=0;i 以上是“C语言如何制作简易金山打字通功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
windows安装touble c
近期有些网友想要了解windows?安装touble的相关情况,小编通过整理给您分享一下。为什么现在还需要TurboC?在当今V...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C语言怎么通过二分查找实现猜数字游戏
C语言怎么通过二分查找实现猜数字游戏本文小编为大家详细介绍“C语言...
-
C语言数据结构中的线性表怎么使用
C语言数据结构中的线性表怎么使用这篇文章主要介绍“C语言数据结构中...
-
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
-
C语言与C++中内存管理的方法
C语言与C++中内存管理的方法这篇文章主要介绍了C语言与C++中内...
-
C语言链式队列与循环队列怎么实现
C语言链式队列与循环队列怎么实现这篇文章主要介绍了C语言链式队列与...
-
C语言冒泡排序怎么实现
C语言冒泡排序怎么实现这篇文章主要介绍了C语言冒泡排序怎么实现的相...
-
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...
-
C语言如何实现无符号数和有符号数间的运算
C语言如何实现无符号数和有符号数间的运算本篇内容主要讲解“C语言如...