不要怀疑 这个东西也是很重要的,虽然我老讲缓冲区,不知道你们有没有遇见过。下面直接进入正题。
如何清空输入缓存
清空输入缓存可以防止自己的变量读取到缓冲区里之前输入的值,而不是自己想要的值。比如:
这里并没有给我输入第二个scanf()的机会,直接跳过,显示了数据,因为第二个scanf()直接在缓冲区里读取到了\n。然后就直接输出了。
这个时候我们就要在第二个scanf()执行前清空缓冲区,虽然会有直接清空输入缓存区的函数,但是各各平台,编译器之间并不一样,所以我就直接上最用的方法了,居然缓冲区里面有多余的数据,那么我们把多余的数据读出来丢掉就可以了。比如:
方法一
使用getchar()把字符读出来,当然例子里面只可以读取一个字符,那么想完全清空缓冲区,可以试一下
while((c = getchar()) != '\n' && c != EOF);
利用循环。确定读取完了为止。
方法二
使用scanf读取数据,这个时候我们可以试一下这两条语句
scanf("%*[^\n]"); scanf("%*c");
因为追后会剩下一个\n所以要靠第二条语句清理掉。终于scanf里面的那些莫名其妙的符号,大家可以看我关于格式化输入输出的的文章
如果大家喜欢我的文章可以帮忙,关注,收藏,转发,评论。谢谢。
网友评论