想知道while语句的具体运行方式
比如
#include<stdio.h>
int main(){
char a;
int n=0;
scanf("%c",&a);
while(a!='\n'){
if(a<='z'&&a>='a'){
a=a-32;
}
if(a=='A'||a=='E'||a=='I'||a=='O'||a=='U'){
n++;
}
printf("%c",a);
scanf("%c",&a);
}
printf("\n%d",n);
return 0;
}
为什么在输入字母后不会立即执行print,而是在输入\n后一起执行print
不会出现输入一个字母就立刻输出一个字母,而是在输入完所有字母后输出类似字符串的效果?
结论
该现象与printf的缓冲区有关。printf是将字符串格式化输出到标准输出,其是带有行缓冲的。如问题中前面输入的字母将暂存到缓冲区,直到遇到换行符时才刷新缓冲区,输出到屏幕。
行缓冲
引入缓冲的目的
行缓冲区刷新条件