关于gets读入因为缓冲区出现的问题

今天被一个同学丢了代码求debug

然后发现bug挺有意思的,稍微记录一下

首先我们读入的东西都会被丢进缓冲区等待接收,比如abc ,如果你使用scanf读入的话,它在读入到 的时候就会提取它需要的东西了,但是它会给你留一个

那么如果现在你突然想用gets读一行字符串,问题就来了

你的 会被当做gets的终止读入,然后你就读不了了

解决方法是

1.getchar(),把这个 给清掉

2.fflush(stdin);清空缓冲区

原文地址:https://www.cnblogs.com/cminus/p/11967576.html