一个c程序问题,ch=getchar();老是被直接跳过!!
有一个创建二叉树的程序:
#include "stdio.h"
#include "stdlib.h"
//*********************************************************************
//定义二叉树的结构
typedef struct tree{
unsigned char data;
struct tree *lchild;
struct tree *rchild;
}*Ptree,Dtree;
//*********************************************************************
//先序创建二叉树
Ptree createTree()
{
unsigned char ch;
Ptree t;
ch=getchar();
if(ch=='#')
t=NULL;
else
{
t=(Ptree)malloc(sizeof(Dtree));
t->data=ch;
t->lchild=createTree();
t->rchild=createTree();
}
return t;
}
void main(void)
{
createTree();
}
第一次就输入‘#’时,程序运行良好,正常退出,可是如果第一次不输入‘#’时,程序接下来就出问题了,我用gdb进行了调试,发现ch=getchar()这一行总是每递归两次就跳过执行一次,而去直接检测ch,而不是等待输入ch!!
这是为什么?
[解决办法]
用非缓冲函数getch代替缓冲函数getchar试试看。
[解决办法]