網站首頁 編程語言 正文
在學習創建二叉樹時遇到了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依次接收它們。
原文鏈接:https://blog.csdn.net/qq_45233119/article/details/122246808
相關推薦
- 2023-04-08 Python實現將一段話txt生成字幕srt文件_python
- 2022-03-14 golang實現子網掩碼和網絡位長度相互轉換
- 2022-05-12 tp5使用阿里云oss存儲圖片
- 2022-09-17 ASP.NET?Core實現AES-GCM加密算法_實用技巧
- 2022-10-08 docker安裝redis并掛載到本地的詳細教程_docker
- 2022-09-26 在?React?Native?中使用?CSS?Modules的配置方法_React
- 2023-09-12 利用Map結合Supplier消除switch...case
- 2022-07-18 Android 解決InputMethodManager 內存泄露問題
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支