scanf缓存区问题
时间: 2023-11-16 09:05:30 浏览: 78
scanf缓存区问题是指在使用多个scanf()函数时,如果输入缓冲区还有数据的话,scanf()函数就不会询问用户输入,而是直接将输入缓冲区的内容拿出来用了,这就导致了前面的错误影响到后面的内容。例如,当我们输入完1 2后按下回车键,输入缓冲区里存放着1 2 \n,第一次scanf()读走1给a,2给b,中间的空格丢弃,此时第一句scanf()已经读完。但是缓冲区里还留着一个\n,当第二个scanf()读入时,首先检查缓冲区,发现缓冲区里还有\n,而且正好匹配%c,于是直接读走\n给c。为了隔离这种问题,我们可以使用fflush(stdin)或者getchar()函数来清空输入缓冲区。
阅读全文