c语言清除缓冲区的数据?

Python021

c语言清除缓冲区的数据?,第1张

while(getchar()!='n') -- 应当是 while(getchar()!='\n') 这是不断循环取字符,直到取到 Enter 键时结束循环。作用,清除上面一次输入时残留在输入流中的字符。\x0d\x0a改用 fflush(stdin)更佳。\x0d\x0aret = scanf("%d,%d",&a,&b) ret 为成功读得的数据个数。\x0d\x0a清除的缓冲区中的残留数据: if (ret != 2) fflush(stdin)

如果缓冲区是在栈里分配的话是不需要清除的,因为系统会帮你做这个工作,但是如果缓冲区是分配在堆里的话就要自己手动清除了,不然会发生内存泄露,就是虽然不使用,但占用的资源仍然不能释放,会影响系统性能。

清除缓冲区有三种方法

方法一:

fflush(stdin)

fflush(stdin)在VC上可以使用,但是其他编译器不能保证对fflush的实现。

方法二:

setbuf(stdin, NULL)

setbuf(stdin, NULL)是使stdin输入流由默认缓冲区转为无缓冲区。但缓冲区没有了。

方法三:

char chwhile((ch = getchar()) != '\n' &&ch != EOF)

这种方法是最好的方法,因为它使用的是C语言的基本语法,在什么情况都是支持的。