scanf中加\n的问题和fflush函数

发布时间 2023-06-12 11:01:18作者: _Elysia

某日我在跟着视频课程敲代码,代码如下:

 就是一个输入密码再确认的过程,但当程序运行之后,发现了奇怪的现象:输入密码后,按回车多少次都无法进入下一步

检查了半天,发现自己的scanf里顺手多打了一个\n,但这里并没有报错,于是我开始查找scanf中\n代表着什么

 

 

这就解释了为什么我之前按回车没有反应,被这里的\n给忽略了。

解决了这个问题,另一个问题又来了:视频中的老师用getchar()来清楚输入缓冲区最后的\n,但我了解到fflush(stdin)也有清空缓冲区的作用,于是本着求实的心理我试了试,结果发现竟然不起作用,fflush(stdin)加了和没加一个效果

于是我上网查了关于fflush函数的相关资料

 很好理解,我又单独把示例输到编译器里运行,发现还是没有用

百思不得其解,我问了计科专业的同学,回答如下:

 

 笑死,最后发现,我用的是vs2022,而fflush函数在这里还真没用(那为什么不报错orz,花了我好多时间)

 

那么问题又来了,有哪些方式可以清楚缓冲区呢

总之找到的回答如下:

 果然代码不能只看老师敲,得自己上手,可以发现自己很多的问题和误区,也能帮助知识的巩固和拓展