printf与scanf先后执行的问题
先提一下 scanf遇到空格符 回车符是会自动忽略的 并放在缓冲区。遇到回车符会停止scanf的读取的。值得一提的是scanf在读取%c字符时还是会读取空白符也就是空格符,其他时候都是默认跳过空白符直到遇到非空白符进行读取。
第一个例子
#include <stdio.h>
int main(void){
char m[40];
char n;
printf(“please input first str:\n”);
scanf("%s",m);//读取第一个字符串
printf("you input str is :%s\n",m);
printf("input second char :\n");
scanf("%c",&n); //获取第二个字符
printf("now you input second char is :%c\n",n);
return 0;
}
输出结果:
显然 与我们预期不符, printf跟scanf在一起的时候就是这样,其实我也搞不懂,不是先运行printf,而是一直卡在scanf上,难道是在编译和汇编成机器语言的时候反过来了? 解决方案就是在他们之间加一句fflush(stdout);即可先打印出结果。
#include <stdio.h>
int main(void){
char m[40];
char n,c;
print