C语言输入清空缓冲

124 阅读1分钟

第一接收scanf输入容易多输入一些数据存留在缓冲区中,对之后再次接收输入造成负面影响,有污染。 需要在scanf接收完输入后,清空缓冲区。

常用的两种通用方式:

方式一:

scanf("%*[^\n]"); scanf("%*c");
#*号后表示接收的数据类型比如%c接收字符类型数据,这里是接收所有类型但是没有设置对应的变量,
%*[^\n] -> 将\n之前的字符都丢弃掉,这时缓冲区只留下一个\n
%*c -> 将缓冲区中的\n丢弃

方式二:

char ch;
while((ch = getchar()) != '\n' && ch != EOF)