系统接收输入一般有两级缓存,分别在是应用层缓存区和系统维护的缓存区。
scanf处理标准输入,有时需要清除缓存区(防止错误),可以执行代码scanf("%*[^\n]%*c");
解释scanf("%*[^\n]%*c"):
[^\n]——字符流仅遇’\n’结束; '*'符——忽略该输入项(该项缓存区删除);
%*[^\n]——忽略字符流’\n’前的数据;%*c:忽略一个字符,此处忽略’\n’。
%*[^\n]%*c——标准输入流换行符前的数据忽略,再忽略换行符。
一般从键盘输入结束都会回车,所以代码执行后,包括回车在内的所有字符忽略则缓存区清空。