2个回答
2018-04-01 · 知道合伙人互联网行家
关注
展开全部
第一个 getchar() 不会等待你输入 y+回车的,因为前面有个 scanf,scanf 不会删掉输入缓冲区里的回车,所以第一个 getchar() 会直接运行过去,等待你输入的就是第二个 getchar()。你用 VC 在两个 getchar 上都打断点调试一下就明白了。
不要用 getchar, scanf 这些直接操作标准输入缓冲区的函数,目前最好的方法是用 fgets 读入一行(可以是文件流也可以是标准输入即控制台键盘输入),再用 sscanf 读取和解析整数、浮点数这些数据类型,这样能保证输入格式错误时(比如要求数字却输入了非数字),错误的输入不会一直老留在输入缓冲区中,导致循环解析错误。
不要用 getchar, scanf 这些直接操作标准输入缓冲区的函数,目前最好的方法是用 fgets 读入一行(可以是文件流也可以是标准输入即控制台键盘输入),再用 sscanf 读取和解析整数、浮点数这些数据类型,这样能保证输入格式错误时(比如要求数字却输入了非数字),错误的输入不会一直老留在输入缓冲区中,导致循环解析错误。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询