[一事不明]scanf跟fgets的深层次的东西
[一事不明]scanf和fgets的深层次的东西
我今天写函数的时候,问题简化为,我定义了一个char name[20]={};
然后用fgets(name,20,stdin);一开始是可以获得输入的。后来继续写的时候,多用了几次,居然出现了问题,直接跳过了这条语句,获得的是空值.......
我可以确认输入缓冲区是木有东东的....
后来我一生气,把用到fgets的地方全部换成 scanf("%s",name);顺利的通过了。
我就有疑问了,为什么会出现这种情况?fgets在什么时候会出现bug?
------解决方案--------------------
可以通过调试找到原因,再谈解决办法。
我今天写函数的时候,问题简化为,我定义了一个char name[20]={};
然后用fgets(name,20,stdin);一开始是可以获得输入的。后来继续写的时候,多用了几次,居然出现了问题,直接跳过了这条语句,获得的是空值.......
我可以确认输入缓冲区是木有东东的....
后来我一生气,把用到fgets的地方全部换成 scanf("%s",name);顺利的通过了。
我就有疑问了,为什么会出现这种情况?fgets在什么时候会出现bug?
------解决方案--------------------
可以通过调试找到原因,再谈解决办法。