您的位置:首页 > 其它

键盘输入缓冲区测试,了解

2010-03-28 23:15 162 查看
1, 在两次键盘输入时要及时对键盘缓冲区进行清空处理,以避免对以后的输入产生不良影响

测试代码:

// JianpanBuf.cpp : Defines the entry point for the console application.
//测试了解键盘缓冲区

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main(int argc, char* argv[])
{
int a[20];
char str[100];
int i=0,ch;
/*
**输入数据并存储到a[i],输入数据为正数,如输入 2 3 -1,保存2,3到数组
*/
while(i<20 && scanf("%d",&a[i]) && a[i]>0)
i++;

printf("/n");
/*
**清除键盘缓冲区,不影响下次的键盘输入,不写会产生严重的后果
*/
while((ch=getchar())!=EOF && ch!='/n')//相当于ch吃掉上次键盘缓冲区里的不用的字符,防止他们被解释为下一次的输入数据
;

/*
**输入字符串并输出
*/
if(gets(str)!=NULL)
puts(str);
else
exit(1);
return 0;
}


2 ,键盘缓冲区作用域,整个源文件,并不是一个函数用完后,系统就会自动清空,如果下面要用到的话,记得自己清空,否则后果也是不可预计,即使你觉得没有必要也要清空

测试代码:

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void f1();
void f2();

int main(int argc, char* argv[])
{
f1();
f2();
return 0;
}
void f1()
{
int i=0,a[20],ch;
while(i<20 && scanf("%d",&a[i]) && a[i]>0)
;
/*
**清除键盘缓冲区
*/
while((ch=getchar())!=EOF && ch!='/n')
;
}
void f2()
{
char str[20];
gets(str);
puts(str);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐