C語(yǔ)言中關(guān)于scanf函數(shù)的一些問(wèn)題詳解
在學(xué)習(xí)創(chuàng)建二叉樹時(shí)遇到了scanf的一些問(wèn)題,在此記錄下來(lái)

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

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

不接收換行符也可以輸入一個(gè)完整的二叉樹序列,也可以成功創(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("請(qǐng)輸入%c的左子樹:", ch);
CreateBiTree(T->lchild);
printf("請(qǐng)輸入%c的右子樹:", ch);
CreateBiTree(T->rchild);
}
}
測(cè)試后發(fā)現(xiàn)若有多個(gè)scanf()例如

輸入AB換行,多余的scanf會(huì)接收換行符。

若是Int類型換行不被接收,因?yàn)閾Q行符可以作為字符被接收,
在多個(gè)scanf的情況下可以一行輸入多個(gè)數(shù)據(jù),會(huì)依次接收這些數(shù)據(jù),

第一行輸入1,2,兩個(gè)scanf接收了1,2;

總結(jié)
Scanf傳遞字符會(huì)接收換行符,避免則須在換行時(shí)吸收多余傳遞的換行符,(getchar傳遞字符同理),若有多個(gè)scanf(如循環(huán),嵌套)允許一次輸入多個(gè)數(shù)據(jù),scanf依次接收它們。
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++執(zhí)行shell命令的多種實(shí)現(xiàn)方法
在linux系統(tǒng)下,用C++程序執(zhí)行shell命令有多種方式,主要介紹了3中方法,具有一定的參考價(jià)值,感興趣的可以了解一下2021-11-11
c++ 內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別
內(nèi)聯(lián)函數(shù)是c++為了提高程序的運(yùn)行速度做的改進(jìn),那么內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是什么,本文就來(lái)詳細(xì)的介紹一下,感興趣的朋友可以了解一下2021-05-05
c++棧內(nèi)存和堆內(nèi)存的基本使用小結(jié)
本文主要介紹了c++棧內(nèi)存和堆內(nèi)存的基本使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
詳解C語(yǔ)言中結(jié)構(gòu)體(struct)的用法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中結(jié)構(gòu)體(struct)的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下2022-08-08
C++設(shè)計(jì)模式之簡(jiǎn)單工廠模式的實(shí)現(xiàn)示例
這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)模式之簡(jiǎn)單工廠模式的相關(guān)資料,簡(jiǎn)單工廠模式,主要用于創(chuàng)建對(duì)象,添加類時(shí),不會(huì)影響以前的系統(tǒng)代碼,需要的朋友可以參考下2021-06-06
淺談使用Rapidxml 庫(kù)遇到的問(wèn)題和分析過(guò)程(分享)
下面小編就為大家?guī)?lái)一篇淺談使用Rapidxml 庫(kù)遇到的問(wèn)題和分析過(guò)程(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
詳解C語(yǔ)言中typedef和#define的用法與區(qū)別
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中typedef和#define的的用法、區(qū)別,以及陷阱。文中通過(guò)示例進(jìn)行了詳細(xì)講解,感興趣的小伙伴可以了解一下2022-07-07
Cocos2d-x 3.x入門教程(一):基礎(chǔ)概念
這篇文章主要介紹了Cocos2d-x 3.x入門教程(一):基礎(chǔ)概念,本文講解了Director、Scene、Layer、Sprite等內(nèi)容,需要的朋友可以參考下2014-11-11

