服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言中关于scanf函数的一些问题详解

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

2022-08-04 10:08风雪宜哉 C/C++

这篇文章主要为大家介绍了C语言中关于scanf函数的一些问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

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

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

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

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

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

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

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

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

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()例如

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

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

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

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

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

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

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

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

 总结

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

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

原文链接:https://blog.csdn.net/qq_45233119/article/details/122246808

延伸 · 阅读

精彩推荐