如果对s1先后使用了scanf()和getchar()来赋值,中间应该加上while(getchar()!=’\n’),目的是清空缓存区
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s1[100];
printf("用scanf输入字符序列s1\n");
scanf("%s",s1);
printf("%s\n",s1);
while(getchar()!='\n')
printf("用gets输入字符序列s1\n");
gets(s1);
printf("%s",s1);
}
但是,如果把这句话去掉
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s1[100];
printf("用scanf输入字符序列s1\n");
scanf("%s",s1);
printf("%s\n",s1);
printf("用gets输入字符序列s1\n");
gets(s1);
printf("%s",s1);
}
出现这样的情况,是因为调用函数gets()的时候缓存区还有一个’\n’,非空,也就不期待用户输入,就把它当做终端的输入值了。