#include <stdio.h>
#include <stdlib.h>
int main(void) {
int dogs ;
printf("How many dog do you have?\n");
scanf("%d", &dogs);
printf("So you have %d dogs. " , dogs);
return EXIT_SUCCESS;
}
期待执行顺序是,先输出"How many dog do you have?\n",然后等待用户输入。
然而实际执行结果却是
解决方法是刷新缓冲区,在printf语句之后scanf语句之前加入刷新缓冲的代码 fflush(stdout);
改正后的代码和执行结果如下
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int dogs ;
printf("How many dog do you have?\n");
fflush(stdout);
scanf("%d", &dogs);
printf("So you have %d dogs. " , dogs);
return EXIT_SUCCESS;
}