gets函数: 从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。
换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
puts函数:在输出是将字符串结束标志'\0'换位'\n',即输出字符串后换行。
#include <stdio.h>
#include <string.h>
#define N 6
void main()
{
char s1[N],s2[N],s3[6],s4[6];
scanf("%s%s",s1,s2);
gets(s3);
gets(s4);
puts(s1);puts(s2);
puts(s3);puts(s4);
return 0;
}
如果输入如下字符串:
123 321
456 654
输出结果是:
123
321
456 654
其中,s1=123 s2=321 s3=NULL s4=456 654.
因为,scanf和cin等输入函数,会自动识别 ‘ ’和 '\n' 等符号,当出现这些符号时,就自动判定输入结束,所以这些字符仍然存在于缓存中。
在接下来的gets(s3)会先把缓存中的'\n'读取了,于是你输出的就是一个空行(NULL看不见)。