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自带回车到下一行;