scanf
scanf遇到空格、回车、跳格则认为是对当前类型输入的终止,接下来进行下一类型的输入或者完成scanf输入,进行下一环节。
在scanf之后如果再进行字符的输入,不管隔多远,都需要用一个getchar()来吃掉回车或者空格
如:
#include<stdio.h>
int main()
{
char s[21],ch;
scanf("%s",&s);
//getchar();
ch=getchar();
printf("%s",s);
printf("%c",ch);
}
————这个程序的结果是只能输出s 不能输出输入的ch
如果加上了getchar(),就可以正常输出了。
gets()
会把空格当作一个字符,遇到回车就停止输入。
gets()输入了字符串之后,后面如果在需要输入单个字符,不需要用getchar()吃回车。下面是测试:
#include<stdio.h>
int main()
{
char s[21],ch;
gets(s);
ch=getchar();
printf("%s",s);
printf("%c",ch);
}
输入 :wrc
s//输入的wrc后面有一个空格 之后再是回车。
输出:wrc s