fmt.Scanf问题,前面的可以输入值,后面的fmt.Scanf不能输入

liojio · · 1358 次点击
原因是执行fmt.Scanf("%c", &operator)时你其实输入的是+号和回车, 你%c只读了+号导致回车还在输入缓冲区。 所以之后执行fmt.Scanln(&num3)时会直接读取之前缓冲区残余的回车而不给你输入的机会。 解决方法是读取时读入换行符: ```fmt.Scanf("%c", &operator) -> fmt.Scanf("%c\n", &operator)```
#18
更多评论
没有人遇到过这种问题吗?
#1
当且仅当前面的输入类型不对,或者scan函数出错情况下,才会出现你的这种情况,所以,我们要捕获scan()系列方法的返回值,如果返回值不为nil,则不要再继续往下执行scan了,如果还继续scan,则会出现你的这种情况!
#2