清空缓冲区,不让变量获取到莫名其妙的值

清空缓冲区,不让变量获取到莫名其妙的值

不要怀疑 这个东西也是很重要的,虽然我老讲缓冲区,不知道你们有没有遇见过。下面直接进入正题。

如何清空输入缓存

清空输入缓存可以防止自己的变量读取到缓冲区里之前输入的值,而不是自己想要的值。比如:

清空缓冲区,不让变量获取到莫名其妙的值

这里并没有给我输入第二个scanf()的机会,直接跳过,显示了数据,因为第二个scanf()直接在缓冲区里读取到了\n。然后就直接输出了。

这个时候我们就要在第二个scanf()执行前清空缓冲区,虽然会有直接清空输入缓存区的函数,但是各各平台,编译器之间并不一样,所以我就直接上最用的方法了,居然缓冲区里面有多余的数据,那么我们把多余的数据读出来丢掉就可以了。比如:

方法一

清空缓冲区,不让变量获取到莫名其妙的值

使用getchar()把字符读出来,当然例子里面只可以读取一个字符,那么想完全清空缓冲区,可以试一下

while((c = getchar()) != '\n' && c != EOF);

利用循环。确定读取完了为止。

方法二

清空缓冲区,不让变量获取到莫名其妙的值

使用scanf读取数据,这个时候我们可以试一下这两条语句

scanf("%*[^\n]"); scanf("%*c");

因为追后会剩下一个\n所以要靠第二条语句清理掉。终于scanf里面的那些莫名其妙的符号,大家可以看我关于格式化输入输出的的文章

如果大家喜欢我的文章可以帮忙,关注,收藏,转发,评论。谢谢。

如果有不知如何学习编程的人或者想认识更多学习伙伴的人,可以关注私聊发送 “编程”。


分享到:


相關文章: