日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

C語言中關(guān)于scanf函數(shù)的一些問題詳解_C 語言

作者:風(fēng)雪宜哉 ? 更新時間: 2022-03-21 編程語言

在學(xué)習(xí)創(chuàng)建二叉樹時遇到了scanf的一些問題,在此記錄下來

創(chuàng)建根節(jié)點A后理想情況是輸入A的左子樹,若不為空繼續(xù)創(chuàng)建左子樹,但輸入A后發(fā)現(xiàn)重復(fù)創(chuàng)建了一個左子樹,測試后發(fā)現(xiàn)輸入A換行后scanf函數(shù)接收了換行符(ASCII碼10)

若想按次序創(chuàng)建各個節(jié)點則需要使用getchar()吸收換行符

?不接收換行符也可以輸入一個完整的二叉樹序列,也可以成功創(chuàng)建。

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);
    }
}

?測試后發(fā)現(xiàn)若有多個scanf()例如

輸入AB換行,多余的scanf會接收換行符。

若是Int類型換行不被接收,因為換行符可以作為字符被接收,

在多個scanf的情況下可以一行輸入多個數(shù)據(jù),會依次接收這些數(shù)據(jù),

?第一行輸入1,2,兩個scanf接收了1,2;

?總結(jié)

Scanf傳遞字符會接收換行符,避免則須在換行時吸收多余傳遞的換行符,(getchar傳遞字符同理),若有多個scanf(如循環(huán),嵌套)允許一次輸入多個數(shù)據(jù),scanf依次接收它們。

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

欄目分類
最近更新