|
# include <stdio.h>
/* 功能说明:返回获取的一个击键ASCII值,且无论击键多少次,都只返回第一个击键。*/
int getcommand (void)
{
char s[2];
int c;
fread (s, sizeof(char)*2, 1, stdin);
c = s[0];
return c;
}
int main (void)
{
int counter=0, ascii;
while (1){
counter++;
ascii = getcommand();
printf ("loop: %d\n", counter);
}
return 0;
}
出现问题
事实上,循环的次数是按键次数的n-1(因为回车也算一个),也就是说,当循环第一次执行的时候,fread()会等待输入,并且它执行一次只取二个字符,当输入的字符数大于2时,getcommand()函数再次执行时会读取上次“剩下”的按键,我是我所不希望的,我要的是每次执行getcommand()函数,fread()都停下来等待使用者的输入。
我有一个思路,就是每执行完毕之后,都把stdin里面的内容清空,这样下次执行时fread()就会停下来等待新的输入了,但我不知道如何做,请大家帮帮忙。 |
|