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

創(chuàng)建根節(jié)點(diǎn)A后理想情況是輸入A的左子樹,若不為空繼續(xù)創(chuàng)建左子樹,但輸入A后發(fā)現(xiàn)重復(fù)創(chuàng)建了一個(gè)左子樹,測試后發(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("請輸入%c的左子樹:", ch);
CreateBiTree(T->lchild);
printf("請輸入%c的右子樹:", ch);
CreateBiTree(T->rchild);
}
}
測試后發(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依次接收它們。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(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ū)別是什么,本文就來詳細(xì)的介紹一下,感興趣的朋友可以了解一下2021-05-05
c++棧內(nèi)存和堆內(nèi)存的基本使用小結(jié)
本文主要介紹了c++棧內(nèi)存和堆內(nèi)存的基本使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
詳解C語言中結(jié)構(gòu)體(struct)的用法
這篇文章主要為大家詳細(xì)介紹了C語言中結(jié)構(gòu)體(struct)的用法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下2022-08-08
C++設(shè)計(jì)模式之簡單工廠模式的實(shí)現(xiàn)示例
這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)模式之簡單工廠模式的相關(guān)資料,簡單工廠模式,主要用于創(chuàng)建對象,添加類時(shí),不會(huì)影響以前的系統(tǒng)代碼,需要的朋友可以參考下2021-06-06
詳解C語言中typedef和#define的用法與區(qū)別
這篇文章主要給大家介紹了關(guān)于C語言中typedef和#define的的用法、區(qū)別,以及陷阱。文中通過示例進(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

