scanf可能遇到的陷阱
今天做题过程中发现的,总结一下
先看例子:
换言之,第二个%c读入的是空格,导致第3个%d类型不匹配,没有赋上值
再看:
scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车和空格字符,在输入第一个scanf时输入字符后按回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了ch2 (回车只是一种特殊的字符,属于字符型,所以可以赋上值)
总结就是:char会读取缓冲区的空格和回车,谨记!
那么怎么处理呢?
方法就是读入数据时加空格或者getchar()及时清理