C语言中关于scanf函数的一些问题详解

 更新时间:2022年01月07日 15:11:06   作者:风雪宜哉  
这篇文章主要为大家介绍了C语言中关于scanf函数的一些问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

在学习创建二叉树时遇到了scanf的一些问题,在此记录下来

创建根节点A后理想情况是输入A的左子树,若不为空继续创建左子树,但输入A后发现重复创建了一个左子树,测试后发现输入A换行后scanf函数接收了换行符(ASCII码10)

若想按次序创建各个节点则需要使用getchar()吸收换行符

 不接收换行符也可以输入一个完整的二叉树序列,也可以成功创建。

void CreateBiTree(BiTree &T)
{
    char ch, temp;
    scanf("%c", &ch);
    temp = getchar(); //换行输入则需要吸收换行
    if (ch == '#')
    {
        T = NULL;
        return;
    }
    else
    {
        T = (Tree *)malloc(sizeof(Tree));
        T->data = ch;
        printf("请输入%c的左子树:", ch);
        CreateBiTree(T->lchild);
        printf("请输入%c的右子树:", ch);
        CreateBiTree(T->rchild);
    }
}

 测试后发现若有多个scanf()例如

输入AB换行,多余的scanf会接收换行符。

若是Int类型换行不被接收,因为换行符可以作为字符被接收,

在多个scanf的情况下可以一行输入多个数据,会依次接收这些数据,

 第一行输入1,2,两个scanf接收了1,2;

 总结

Scanf传递字符会接收换行符,避免则须在换行时吸收多余传递的换行符,(getchar传递字符同理),若有多个scanf(如循环,嵌套)允许一次输入多个数据,scanf依次接收它们。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++实现map和set封装详解

    C++实现map和set封装详解

    欢迎阅读本指南,将带您深入了解C++中map和set的实现细节,本文将重点介绍如何使用C++标准库中的容器来优化代码,同时提供实用的示例和技巧,无论您是初学者还是资深开发者,本指南都将成为您掌握C++中map和set封装的有力助手,需要的朋友可以参考下
    2024-03-03
  • C++执行shell命令的多种实现方法

    C++执行shell命令的多种实现方法

    在linux系统下,用C++程序执行shell命令有多种方式,主要介绍了3中方法,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • c++ 内联函数和普通函数的区别

    c++ 内联函数和普通函数的区别

    内联函数是c++为了提高程序的运行速度做的改进,那么内联函数和普通函数的区别是什么,本文就来详细的介绍一下,感兴趣的朋友可以了解一下
    2021-05-05
  • c++栈内存和堆内存的基本使用小结

    c++栈内存和堆内存的基本使用小结

    本文主要介绍了c++栈内存和堆内存的基本使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 详解C语言中结构体(struct)的用法

    详解C语言中结构体(struct)的用法

    这篇文章主要为大家详细介绍了C语言中结构体(struct)的用法,文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2022-08-08
  • C++设计模式之简单工厂模式的实现示例

    C++设计模式之简单工厂模式的实现示例

    这篇文章主要给大家介绍了关于C++设计模式之简单工厂模式的相关资料,简单工厂模式,主要用于创建对象,添加类时,不会影响以前的系统代码,需要的朋友可以参考下
    2021-06-06
  • 浅谈使用Rapidxml 库遇到的问题和分析过程(分享)

    浅谈使用Rapidxml 库遇到的问题和分析过程(分享)

    下面小编就为大家带来一篇浅谈使用Rapidxml 库遇到的问题和分析过程(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • C++函数中return语句的使用方法

    C++函数中return语句的使用方法

    C++中的return语句是函数中一个重要的语句,return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数,需要的朋友可以了解下
    2012-12-12
  • 详解C语言中typedef和#define的用法与区别

    详解C语言中typedef和#define的用法与区别

    这篇文章主要给大家介绍了关于C语言中typedef和#define的的用法、区别,以及陷阱。文中通过示例进行了详细讲解,感兴趣的小伙伴可以了解一下
    2022-07-07
  • Cocos2d-x 3.x入门教程(一):基础概念

    Cocos2d-x 3.x入门教程(一):基础概念

    这篇文章主要介绍了Cocos2d-x 3.x入门教程(一):基础概念,本文讲解了Director、Scene、Layer、Sprite等内容,需要的朋友可以参考下
    2014-11-11

最新评论