C语言scanf函数有时输入两次的原因
原代码
输出结果
分析:
参考C和指针原文:scanf函数时,格式化字符串到达末尾或者读取的输入不再匹配格式字符串所指定的类型时,输入就停止。
观察scanf函数,scanf函数中有回车符
输入10 回车
第一个回车符被吃掉了,并且会吃掉后续连续的回车符,直到遇到第一个非回车符。
再输入10,此时scanf停止吃入,直到下一个回车结束返回。
总结:
scanf(“%d\n”, &input):实质上当输入10 回车 10 回车时,缓冲区内容为10 回车 10。第一个回车无法起到结束返回的作用。
改进:scanf(“%d”, &input),此时输入10 回车后直接结束返回。
改进结果如下图所示