2 wy1018507358 wy1018507358 于 2013.08.11 13:04 提问

关于scanf指令跳过执行的问题。单步调试时正确的 。纠结好长时间

运行前两步是正确的,第三步就不正确了我用的是vi 编辑器 调试gdb
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int TElemType;
typedef int Status;
`
typedef struct BiTNode
{
TElemType data;

struct BiTNode lchild,*rchild;
}BiTNode,*BiTree;
int i=0;//用来测试递归的层
Status CreateBiTree(BiTree *T)

{
i++;
printf("The%d level\n", i);

char ch;
scanf("%c",&ch);

setbuf(stdin,NULL);//用来清空输入缓存的数据

if(ch==' ')
(*T)=NULL;
else
{
if(!(*T=(BiTNode
)malloc(sizeof(BiTNode))))
exit(0);
(*T)->data=ch;

CreateBiTree(&((*T)->lchild));
CreateBiTree(&((*T)->rchild));
}
return 1;
}
void main()
{
BiTree root;
CreateBiTree(&root);
printf("success");

}
`

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!