scanf中加\n的问题和fflush函数
某日我在跟着视频课程敲代码,代码如下:
就是一个输入密码再确认的过程,但当程序运行之后,发现了奇怪的现象:输入密码后,按回车多少次都无法进入下一步
检查了半天,发现自己的scanf里顺手多打了一个\n,但这里并没有报错,于是我开始查找scanf中\n代表着什么
这就解释了为什么我之前按回车没有反应,被这里的\n给忽略了。
解决了这个问题,另一个问题又来了:视频中的老师用getchar()来清楚输入缓冲区最后的\n,但我了解到fflush(stdin)也有清空缓冲区的作用,于是本着求实的心理我试了试,结果发现竟然不起作用,fflush(stdin)加了和没加一个效果
于是我上网查了关于fflush函数的相关资料
很好理解,我又单独把示例输到编译器里运行,发现还是没有用
百思不得其解,我问了计科专业的同学,回答如下:
笑死,最后发现,我用的是vs2022,而fflush函数在这里还真没用(那为什么不报错orz,花了我好多时间)
那么问题又来了,有哪些方式可以清楚缓冲区呢
总之找到的回答如下:
果然代码不能只看老师敲,得自己上手,可以发现自己很多的问题和误区,也能帮助知识的巩固和拓展