scanf不仅仅可以输入内容还可以清楚内存区的缓存问题
int n,m;
char c;
如 scanf( “%d %d”,&n, &m );
scanf("%c",&c);
当输入 12 13 回车
c 把回车取走了 但是我们本意不是这样的 这就隐身出来缓存问题
因为scanf 不能带走回车 回车会在输入缓存中 c 在缓存中想读取一个字符 刚好就把回车读取了
怎样避免这些呢
可以这样scanf(" %c",&c);在%c前面加上空格 作用就是丢弃不可显示的字符
或者加入getchar()读取回车
当想清理缓存中的内容的时候可以使用scanf函数
scanf("%*[^\n]");
scanf("%*c");
测试代码如下
int main( void )
{
int n;
int m;
char test;
scanf("%d%d",&n,&m);
scanf("%*[^\n]");
scanf("%*c");
scanf("%c",&test);
scanf("%*[^\n]");
scanf("%*c");
printf("n=%d m=%d test=%c\n",n,m,test);
printf("------------------------\n");
char ab;
printf("1234\n");
scanf("%c",&ab);
printf("%c\n",ab);
return 0;
}
printf函数
char ab;
printf(“123\n”);
scanf("%c",&ab);
因为printf()会都走\n 所以程序会等待用户输入ab的值
printf函数的在此理解
当printf函数遇到什么情况的时候回会输出内容
1 遇到\n 如printf("\n"); 会把缓存的内容输出来
2 当缓存区满的时候
3 当刷新缓存区的时候如 fflush(stdout)
4 当程序结束的时候
5 遇到输入内容的时候
测试代码
int main( void )
{
return 0;
}