我刚才看了你给别人是这样回的。
你问的问题不知是否可以这样理解?
就是getchar()每次只能接收一个字符,但是用户一次键入多个字符后,他先接收一个,等到第二次再接收一个……?
我瞎猜的,不知对不对。
我想重新编一个,编了好久都没有弄出来。
你的“瞎猜”OK!!!
用户一次键入多个字符后,这些字符(的ASCII编码)被操作系统自动存放到“键盘缓冲区”
getchar( )每次从该缓冲区取走一个字符。如果缓冲区空了,getchar()就不得不等待用户
输入。
将程序改如下就可以了:
#define N 20
#include<stdio.h>
#include<bios.h>
int main(void)
{
int i=0;
char c;
for(i=0;i<N;i++)
{
/* c=getchar();*/
c=bioskey(0);
switch (c)
{
case '0':printf("zero ");break;
case '1':printf("one ");break;
case '2':printf("two ");break;
case '3':printf("three ");break;
case '4':printf("four ");break;
case '5':printf("five ");break;
case '6':printf("six ");break;
case '7':printf("seven ");break;
case '8':printf("eight ");break;
case '9':printf("nine ");break;
}
}
}
就可以每输入一个字符,它就输出相应的英文字母;
如果用getchar()函数:
用户一次键入多个字符后,这些字符(的ASCII编码)被操作系统自动存放到“键盘缓冲区”
getchar( )每次从该缓冲区取走一个字符。如果缓冲区空了,getchar()就不得不等待用户
输入。
bioskey()
功能:键盘接受
原型:void(int cmd)
头文件:bios.h
实例:以下是一个用方向键控制的小人移动的代码
#include<stdio.h>
#include<bios.h>
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x11b
#define NUM 219
void main()
{
int key,x,y,a,b;
int i,j;
clrscr();
for(i=20;i<=60;i++)
{
gotoxy(i,4);
printf("%c",NUM);
gotoxy(i,21);
printf("%c",NUM);
}
for(i=4;i<=21;i++)
{
gotoxy(19,i);
printf("%c",NUM);
gotoxy(61,i);
printf("%c",NUM);
gotoxy(18,i);
printf("%c",NUM);
gotoxy(62,i);
printf("%c",NUM);
}
gotoxy(40,10);
x=40;
y=10;
printf("\1");
gotoxy(x,y);
for(;;)
{
a=x;
b=y;
key=bioskey(0);
switch(key)
{
case UP:
{
y--;
if(y==4)
{
y++;
b++;
}
gotoxy(x,y);
}break;
case DOWN:
{
y++;
if(y==21)
{
y--;
b--;
}
gotoxy(x,y);
}break;
case LEFT:
{
x--;
if(x==19)
{
x++;
a++;
}
gotoxy(x,y);
}break;
case RIGHT:
{
x++;
if(x==61)
{
x--;
a--;
}
gotoxy(x,y);
}break;
case ESC : exit(0);
default: continue;
}
printf("\1");
gotoxy(a,b);
printf(" ");
gotoxy(x,y);
}
}
[此贴子已经被作者于2007-4-25 16:09:16编辑过]
将程序改如下就可以了:
#define N 20
#include<stdio.h>
#include<bios.h>
int main(void)
{
int i=0;
char c;
for(i=0;i<N;i++)
{
/* c=getchar();*/
c=bioskey(0);
switch (c)
{
case '0':printf("zero ");break;
case '1':printf("one ");break;
case '2':printf("two ");break;
case '3':printf("three ");break;
case '4':printf("four ");break;
case '5':printf("five ");break;
case '6':printf("six ");break;
case '7':printf("seven ");break;
case '8':printf("eight ");break;
case '9':printf("nine ");break;
}
}
}
就可以每输入一个字符,它就输出相应的英文字母;
如果用getchar()函数:
用户一次键入多个字符后,这些字符(的ASCII编码)被操作系统自动存放到“键盘缓冲区”
getchar( )每次从该缓冲区取走一个字符。如果缓冲区空了,getchar()就不得不等待用户
输入。
呵呵 !
正解啊
学习。。。