| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3141 人关注过本帖
标题:为什么要清缓存
只看楼主 加入收藏
韩剧鼻祖
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-10-1
收藏
 问题点数:0 回复次数:9 
为什么要清缓存

各位哥哥姐姐,我有一事不明,在什么情况下要清理缓存?
能给我这个初学者深入讲解一下吗?谢谢了

搜索更多相关主题的帖子: 缓存 讲解 
2006-10-08 18:37
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1986
专家分:4
注 册:2006-7-1
收藏
得分:0 
因为你有的时候在输入一个字符后,在输入一个字符,如果你不清空缓冲区,那上一个字符还在你的缓冲区内!这样就造成错误了!明白了吗??

[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-10-08 19:35
韩剧鼻祖
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-10-1
收藏
得分:0 
#include<stdio.h>
void main()
{
int a,b,c=1,d,e,f=0;
char ans='y';
printf("请输入班级号:\n");
scanf("%d",&a);
printf("请输入该班级的学员总数:\n");
scanf("%d",&b);
do
{
f=0;
c=1;
while(c<=b)
{
printf("输入学号%d的成绩:\n",c);
scanf("%d",&d);
e=d;
f=f+e;
c++;
}
printf("该班级的学员的平均成绩为:%d\n",f/b);
printf("是否继续输入(y/n):\n");
fflush(stdin); (这个地方为什么要清缓存呢?)
scanf("%c",&ans);
}while(ans=='y');
}

2006-10-08 21:14
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1986
专家分:4
注 册:2006-7-1
收藏
得分:0 

就我个人的理解是:在你输入y之前,你应该确保在你的缓冲区里面是没有任何字符的,应该是空的。当在你输入y之后按回车,在你的缓冲区里面就只有一个y!所以,我想你应该明白了!


[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-10-08 21:22
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
请问这个fflush(stdin);是什么

谁有强殖装甲第二部,可以Q我460054868
2006-10-08 23:13
韩剧鼻祖
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-10-1
收藏
得分:0 

谢谢神经塔师哥的讲解,差不多明白了,谢谢您了


2006-10-08 23:33
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1986
专家分:4
注 册:2006-7-1
收藏
得分:0 
fflush(stdin);这个就是清空缓冲区的意思了!

[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-10-09 08:18
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
[QUOTE]

因为你有的时候在输入一个字符后,在输入一个字符,如果你不清空缓冲区,那上一个字符还在你的缓冲区内!这样就造成错误了!明白了吗??

[/QUOTE]
能讲一讲具体会造成什么错误吗?

[此贴子已经被作者于2006-10-9 10:46:45编辑过]


我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2006-10-09 10:46
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用sunyuantz在2006-10-9 10:46:10的发言:

因为你有的时候在输入一个字符后,在输入一个字符,如果你不清空缓冲区,那上一个字符还在你的缓冲区内!这样就造成错误了!明白了吗??


能讲一讲具体会造成什么错误吗?

以前有个帖子对这个做了具体介绍 不是很长时间 自己先搜一搜
你去问问 nuciewth 他肯定记的那个帖子
不知道加没精华

2006-10-09 10:53
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

呵呵.简单的说

象scanf是从输入流缓冲区中读取值的.

而并非从键盘(也就是终端)缓冲区读取

而一般的情况下. scanf是遇到回车(\n)而结束的.

可是.他接受的值并没有\n 所以.这个\n很多时候是留在输入流缓冲区的

因为 scanf是从输入流缓冲区读取值.所以.在下一次的 scanf 会继续读取这个\n (当然.scanf遇到\n结束.所以造成了一次输入失败.)

问题是.很多的时候不会发生这种情况.这个我也不太明白其中的道理.不过 多数时候遇到 scanf 输入失败的情况就是这个原因

在值得提的一点是

getchar是从输入流缓冲区读取的
而getche是从键盘缓冲区读取的.


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-09 10:59
快速回复:为什么要清缓存
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved