返回信息流前两天写代码用gets()读取的时候遇到了一个奇怪的问题,今天想起来来这里问问。
gets()都知道是用来读一行的,但是再这种情况下会首先读入一个空格,比如:
1 Hello World
如果代码写作:
int a;
char b[NUM];
cin>>a;
gets(b)
的时候,b会首先读入一个空格;
但是如果是这样的输入数据:
Hello World
然后用:gets(b),则读入的第一个字符是‘H’
不明白具体是怎么回事。有没有人知道?
看csdn上说cin和cout因为缓冲区的关系有时候会出现莫名其妙的错误,但是没有详细解释。就举了个例子
这是一条镜像帖。来源:北邮人论坛 / cpp / #78126同步于 2014/4/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
gets()函数遇到 了一个问题
Emileee
2014/4/4镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
恩,针对这道题目可以这样做,但是不太具有普遍性
最后处理也是这么处理的
【 在 da245764231 的大作中提到: 】
: 你在gets()前面加个getchar()把那个字符吸收掉就没有这个问题了