关于C语言 scanf 字符类型时直接跳过问题 出现的原因及解决方案

问题:如上图所示, 问题出现点位于输入多个顶点值ABCDE时, 存入的结果为(\n A B C D),也就是说,i = 0 时scanf/这条语句被跳过了,直接执行i = 1时的scanf语句。
原因:第一次输入时,末尾的回车或空格键被保留在了缓冲区,下次输入时,缓冲区内的回车或空格就被自动地赋到字符数组中,因此scanf就被跳过了。
解决方案:
1.getchar()清除缓冲区中的字符,如图。
2.利用函数fflush( )清除缓冲区:如fflush(stdin),(待尝试);
浙公网安备 33010602011771号