请教fflush的作用
请问哪位可以帮我解释一下fflush(stdin)的作用,括号里面的stdin又是什么意思,程序里面不用这个又会怎么样???
----------------解决方案--------------------------------------------------------
清空输入的缓冲流,stdin是标准的输入设备,定义为文件指针。。可以视作文件一样输入。。。
[此贴子已经被作者于2005-4-23 23:28:32编辑过]
----------------解决方案--------------------------------------------------------
清流函数!
stdin 代表标准输入
----------------解决方案--------------------------------------------------------
如果不用会怎么样,程序运行会不会不正常。
----------------解决方案--------------------------------------------------------
#include <stdio.h> #include <conio.h>
int main() { char a,b; printf("input a="); scanf("%c",&a); if(a=='a') { /* fflush(stdin); */ printf("input b="); scanf("%c",&b); if(b=='b') printf("ok\n"); } getch(); return 1; } 自己体会一下用和不用所带来的不同效果吧。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
意思就是说如果不清空缓冲,再要输入数据的时候就会缓冲满了,就输不进去数据了,是不是?
第一次在这里发贴,这里的热心人真多,谢谢大家
----------------解决方案--------------------------------------------------------
并不是那样,首先你注意我给出的源代码,第一scanf()接受一个字符输入,当你输入一个字符后按下回车,只有你输入的那个字符被赋给了a,而剩下的一个换行符还保留在缓冲中,当第二次输入时无论你输入的什么字符,都是无效的,缓冲就如堆栈,符合先进先出原则,既然你缓冲中先前有个换行符,那么系统在遇见第二个scanf时自动会将换行符赋给b,所以输入的东西都是无效的。。。。
----------------解决方案--------------------------------------------------------
哦,现在明白了,回车也给它当做一个输入字符,谢了
----------------解决方案--------------------------------------------------------