美文网首页C语言
清空缓冲区,不让变量获取到莫名其妙的值。

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

作者: 明江带你学c语言 | 来源:发表于2018-06-13 22:14 被阅读5次

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

    如何清空输入缓存

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

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

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

    方法一

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

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

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

    方法二

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

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

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

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

    相关文章

      网友评论

        本文标题:清空缓冲区,不让变量获取到莫名其妙的值。

        本文链接:https://www.haomeiwen.com/subject/mmiseftx.html