zoukankan      html  css  js  c++  java
  • 循环中的scanf处理了换行符怎么破

    这种情况一般在循环中要求输入一个字符时容易出现问题。

    问题在于缓冲区,缓冲区中存留了换行符,所以...

    运行下面代码:

    int main(void){
        char a=0;
        while(1){    
            scanf("%c",&a);
            printf("%c
    ",a);
        }
    }

    会出大问题:

    看见没,换行符也被当做输入的字符处理了。

    网上查了查,清理缓冲区,但是控制台缓冲区清空的FlushConsoleInputBuffer函数好像并不是干这个用的...

    得用其它的:rewind(stdin);  或  fflush(stdin);

    这是一个输入单个宽字符的例子。

    fflush是刷新缓冲区,用这个就行了。

    rewind是将文件位置指针移到开头,也能起到同样的作用。

    结果的例子就不展示了,自己试去。

    听说隔壁vs不会吞,但是我拒绝(滑稽)

    (有时候可以用gets来解决,但是我的程序不适合gets,感谢 @小果沐雨 与我的交流。)

  • 相关阅读:
    windown reids
    redis 类型、方法
    nginx 路由配置
    http status code
    beego orm mysql
    thinkphp5
    beego
    MAC 更新brew 镜像源
    php session存入redis
    ios项目开发— iOS8 定位功能API改变
  • 原文地址:https://www.cnblogs.com/pta00/p/13259179.html
Copyright © 2011-2022 走看看