下面介绍几个和字符相关的常用函数。
1、getch()函数:
(假设已经声明了char c)
在大学所用的教材中,字符输入一般是用scanf("%c",&c),或者c=getchar()。
但,实际上,在做一些控制台应用时,最常用的确是c=getch()。
那么getch()与getchar()到底有什么区别呢?
两个函数都是从控制台读取一个字符。
我们在使用getchar()时,在控制台无论输入多少个字符,然后敲击回车后,输入的第一个字符将存储到字符c中去,剩下的字符留在缓存区中。我们在屏幕上完全能够看到我们所输入的字符是什么。
而getch()却不是这样,无需我们敲击回车,函数直接读取我们输入的键值。当我们按一个键,就会马上返回一个ascⅡ码。而且我们输入的这个值是不会在屏幕上显示出来的。getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。(注意:getch()函数并没有被包含在<stdio.h>头文件中,而是被包含在<conio.h>,所以在程序开端,要加上#include <conio.h>)
下面看一个简单程序和结果
#include<stdio.h>
#include<conio.h>
int main()
{
char c;
printf("***%c",c=getch());
getch();
return 0;
}
最后一个getch()是用来调试程序的。
我的输入值是4。
输出结果是:***4
在输入的时候,输入值根本没有显示到屏幕上,否则在***前面会有输入值4.
2、kbhit()函数
功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
包含头文件: include <conio.h>
用法举例:
#include<stdio.h>
#include<conio.h>
int main()
{
char c;
while(1)
{
printf("***\n");
if(kbhit())
{
c=getch();
printf("%c",c);
getch(); //调试程序,观察结果用。
}
}
return 0;
}
这个简单程序,是不断地输出字符串“***”,当检测到当前键盘输入时就会调用if { } 中的语句。而且这个值会输入到getch()函数中。这样在做一个小应用时,程序在不断地运行,你想要用键盘来输入命令就可以用这个函数。
顺便就说几个常用的ascⅡ码。
if(kbhit())
{
c=getch();
//以下代码对应键盘上的↑↓←→四个键
if(c==-32)
{
c=getch();
switch(c)
{
case 72:方向键的向上键();break;
case 80:方向键的向下键();break;
case 75:方向键的向左键();break;
case 77:方向键的向右键();break;
}
}
else //以下代码对应键盘上的"spacebar""esc""the Entey key"七个键
{
switch(c)
{
case 32:空格键();break;
case 27:键盘左上角的退出键();break;
case 13:回车键();break;
}
}
}
以上,文字加空格的都是与按键相对应的,自己写的函数。
1、getch()函数:
(假设已经声明了char c)
在大学所用的教材中,字符输入一般是用scanf("%c",&c),或者c=getchar()。
但,实际上,在做一些控制台应用时,最常用的确是c=getch()。
那么getch()与getchar()到底有什么区别呢?
两个函数都是从控制台读取一个字符。
我们在使用getchar()时,在控制台无论输入多少个字符,然后敲击回车后,输入的第一个字符将存储到字符c中去,剩下的字符留在缓存区中。我们在屏幕上完全能够看到我们所输入的字符是什么。
而getch()却不是这样,无需我们敲击回车,函数直接读取我们输入的键值。当我们按一个键,就会马上返回一个ascⅡ码。而且我们输入的这个值是不会在屏幕上显示出来的。getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。(注意:getch()函数并没有被包含在<stdio.h>头文件中,而是被包含在<conio.h>,所以在程序开端,要加上#include <conio.h>)
下面看一个简单程序和结果
#include<stdio.h>
#include<conio.h>
int main()
{
char c;
printf("***%c",c=getch());
getch();
return 0;
}
最后一个getch()是用来调试程序的。
我的输入值是4。
输出结果是:***4
在输入的时候,输入值根本没有显示到屏幕上,否则在***前面会有输入值4.
2、kbhit()函数
功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
包含头文件: include <conio.h>
用法举例:
#include<stdio.h>
#include<conio.h>
int main()
{
char c;
while(1)
{
printf("***\n");
if(kbhit())
{
c=getch();
printf("%c",c);
getch(); //调试程序,观察结果用。
}
}
return 0;
}
这个简单程序,是不断地输出字符串“***”,当检测到当前键盘输入时就会调用if { } 中的语句。而且这个值会输入到getch()函数中。这样在做一个小应用时,程序在不断地运行,你想要用键盘来输入命令就可以用这个函数。
顺便就说几个常用的ascⅡ码。
if(kbhit())
{
c=getch();
//以下代码对应键盘上的↑↓←→四个键
if(c==-32)
{
c=getch();
switch(c)
{
case 72:方向键的向上键();break;
case 80:方向键的向下键();break;
case 75:方向键的向左键();break;
case 77:方向键的向右键();break;
}
}
else //以下代码对应键盘上的"spacebar""esc""the Entey key"七个键
{
switch(c)
{
case 32:空格键();break;
case 27:键盘左上角的退出键();break;
case 13:回车键();break;
}
}
}
以上,文字加空格的都是与按键相对应的,自己写的函数。