char c;
BiTree *b;
printf("\t1.create a bitree\n\t2.preorder\n\t3.middle order\n\t4.post order\n\t5.count the tree's node\n\t6.count the tree's hight\n\t0.exit\n");
printf("enter your select :\n");
while(scanf("%d",&select))
{
switch(select)
{
case 1://fflush();
scanf("%c",&c);//按回车键的时候回车键也被存进去 //需要清楚缓存
b=Bi_create();
printf("create successfull!\n");
break;
}
}
setbuf(stdin, NULL)刷新输入缓冲区
setbuf的一个误区
int main()
{
int c;
char buf[BUFSIZ];
setbuf(stdout,buf);
while((c = getchar()) != EOF)
putchar(c);
return 0;
}问题是这样的:程序交回控制给操作系统之前C运行库必须进行清理工作,其中一部分是刷新输出缓冲,但是此时main函数已经运行完毕,buf缓冲区作用域在main函数中,此时buf字符数组已经释放,导致输出诡异乱码。