字符类型的连续输入除空白字符干扰

问题:

        有时我们在进行字符类型的连续输入时会习惯性地用空格将每两个数据隔开,但这常常会出问题。比如下面代码:

        int CreateBiTree(BiTree &T) { char tmp; scanf("%c",&tmp); while(tmp==' '); if(tmp=='#') T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit (OVERFLOW); T->data=tmp; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return 1; }

        假如我们在创建自己的二叉树时用空格隔开每个节点,那么很不幸空格也会被读入从而造成混乱。

解决办法:

        我们可以给scanf()函数单独形成一个选择空间保证只有非空白字符才能走出循环执行后续操作。代码如下:

        int CreateBiTree(BiTree &T) { char tmp; do { scanf("%c",&tmp); } while(tmp==' '||tmp=='/n'); if(tmp=='#') T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit (OVERFLOW); T->data=tmp; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return 1; }

        效果如下:

        字符类型的连续输入除空白字符干扰_第1张图片

你可能感兴趣的:(字符类型的连续输入除空白字符干扰)