C语言如何清除scanf()缓存

2015-01-21 11:09:03 · 作者: · 浏览: 17


(1)清除缓存的函数是:

void safe_flush(FILE *fp)
{
	int ch;
	while( (ch = fgetc(fp)) != EOF && ch != '\n' );          
}

(2)然后我们在使用的时候,直接调用就可以了:

scanf("%d",&k);

safe_flush(stdin);

这样就可以清除缓存带来的问题了!


(3)案例演示

a.当我们不清除scanf所带来的危害的时候:

#include
  
   
#include
   
     int main() { int k; printf("请输入你的秘钥:(整数)"); scanf("%d",&k); char c; printf("请输入一个字符:"); c = getchar(); printf("%d ",k); printf("%c ",c); } 
   
  


我们发现 我们输入一个整数的时候,就自动结束程序了,并且将输入的数值作为缓存给了字符c


\


然后我们清除缓存:

<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">#include #include //用于清除回车键缓存的影响 void safe_flush(FILE *fp) { int ch; while( (ch = fgetc(fp)) != EOF && ch != '\n' ); } int main() { int k; printf("请输入你的秘钥:(整数)"); scanf("%d",&k); safe_flush(stdin); char c; printf("请输入一个字符:"); c = getchar(); printf("%d ",k); printf("%c ",c); }
当我们输入整数之后,提示我们输入字符,显然消除了缓存



ok!