c中scanf和gets,puts混合例题的理解;

c中scanf和gets,puts混合使用的理解;


例如:
void main()
{
char s1[10],s2[10],s3[10];
scanf("%s",s1);
gets(s2);
gets(s3);
puts(s1);
puts(s2);
puts(s3);
  getch();
}
如果输入是:aaa/enter/bbb/enter,会有怎样的输出?
答案是:
aaa
bbb
aaa


bbb
|


但如何理解这样的输出呢?
    其实是这样的,首先输入aaa 回车,scanf函数遇到回车自动结束接收结束,
则S1中存放aaa,之后回车操作符任然存留在键盘缓冲区,但到了get(S2),
它遇到键盘缓冲区的回车后,结束接收,并清空键盘缓冲区,之后遇到get(S3),
接收bbb,遇到回车,结束接收;
    之后的puts(s1);puts(s2);puts(s3);,S1输出aaa自带回车,S2输出为空
自带回车换行,S3输出bbb自带回车到下一行;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值