zoukankan      html  css  js  c++  java
  • 输入缓冲区数据残留问题

    有时当编译器执行完后,结果界面不会停在,而是一闪而没,看不到执行结果。在结尾加上getchar同样一闪而没。

    这是因为程序读入数据是从读入缓冲区读取的,当读入缓冲区有数据残留时就会直接从缓冲区读入数据,不会等待输入,就会出现上述结果。

    解决办法有两种:

    1、清空缓冲区数据。利用fflush(stdin)函数,这是标准做法。

        在Linux平台下可用setbuf(stdin,NULL);

    2、scanf("%*[^\n]%*c");这是利用扫描集将缓冲区的数据全部取出以达到清空缓冲区数据。

      (解释:%*[^\n]是逐个读取'\n'字符之前的其他字符,%后面的*是将这些读取的字符丢掉,当遇到'\n'时停止读取操作,此时缓冲区上有一个'\n'残留,%*c是读取并丢掉这个遗留的换行符。)

  • 相关阅读:
    我要把铁路修到威斯特摩兰
    1新建空白jasperreport模板
    oracle权限
    swagger配置
    lombok插件基本使用
    oracle与sqlserver的区别
    yaml语法学习
    第一个SpringBoot
    spring多环境切换
    JSR303数据校验
  • 原文地址:https://www.cnblogs.com/flash610/p/3079127.html
Copyright © 2011-2022 走看看