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

问题:如上图所示, 问题出现点位于输入多个顶点值ABCDE时, 存入的结果为(\n A B C D),也就是说,i = 0 时scanf/这条语句被跳过了,直接执行i = 1时的scanf语句。

原因:第一次输入时,末尾的回车或空格键被保留在了缓冲区,下次输入时,缓冲区内的回车或空格就被自动地赋到字符数组中,因此scanf就被跳过了。

解决方案:

1.getchar()清除缓冲区中的字符,如图。

2.利用函数fflush( )清除缓冲区:如fflush(stdin),(待尝试);

 
posted @ 2022-12-03 16:04  哆啦哪呼呼  阅读(854)  评论(0)    收藏  举报