循环中的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,感谢 @小果沐雨 与我的交流。)

原文地址:https://www.cnblogs.com/pta00/p/13259179.html