#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
char c;
scanf("%d", &a);
c = getchar();
printf(“a = %d, c = %c \n”, a, c);
return 0; }
运行结果: 123abc
a = 123, c = a
将上面的代码进行更改(代码二):
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
char c;
scanf("%d", &a);
fflush(stdin);
c = getchar();
printf(“a = %d, c = %c \n”, a, c);
return 0;
}
运行结果:
123abc xyz
a = 123, c = x
对比上面的代码,代码一没有清空输入缓冲区,回车时,将123赋值给a,缓冲区剩下abc,接着执行getchar(),发现缓冲区有内容,就无需等待用户输入,直接读取了,将 ‘a’ 赋给 c。代码二执行到fflush(),清空缓冲区,getchar()发现缓冲区没有内容,需要等待用户输入,所以必须输入两次。