C语言 吞空格
一共三种办法:
fflush(stdin),
while(getchar()!='\n'),?
scanf("%*c")
p.s visual studio已经移除gets函数了,要换编译器/函数,visual C++可以的
#include <stdio.h>
int main() {
char x[100], y[100], z[100];
int a,b,c;
printf("input three numbers:\n");
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
fflush(stdin); //方法一,在gets()等与字符相关的函数之前,使用函数fflush(stdin)将缓冲区(存了个回车)情况
gets(x);
gets(y);
gets(z);
puts(x);
puts(y);
puts(z);
return 0;
}
#include <stdio.h>
int main() {
char x[100], y[100], z[100];
int a,b,c;
printf("input three numbers:\n");
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
while(getchar()!='\n'); //方法二,使用循环判断缓存区是否有不想有的东西(回车符),若有则吞 注意循环体为空即可,吞的操作用getchar()即可完成
gets(x);
gets(y);
gets(z);
puts(x);
puts(y);
puts(z);
return 0;
}
#include <stdio.h>
int main() {
char x[100], y[100], z[100];
int a,b,c;
printf("input three numbers:\n");
scanf("%d%d%d%*c",&a,&b,&c); //方法三,在scanf()函数结尾处加入%*c,原理是接受一个字符但不做任何操作
printf("%d,%d,%d\n",a,b,c);
gets(x);
gets(y);
gets(z);
puts(x);
puts(y);
puts(z);
return 0;
}