scanf后用getchar缓存问题.

2020-10-16 时事 66阅读
你输入 到缓冲区的有 "1\n" 但是 scanf("%d",&n); 只会读取 "1"
回车还在缓冲区中, 接着你的 gets() 函数 就会 读取缓冲区直到遇到 回车 为止 ,所以第一个 gets() 刚好把留下的 回车 读走了。。。
然后就是后面发生的事了。
这个和具体的输入内容相关
%s 的话,读取缓冲区直到 空格回车等空白字符,同时会把这个空白字符清除
%d,%f的话,读取缓冲区 直到 非数字,但是不会清除后面的这些字符
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com