網站首頁 編程語言 正文
C語言中,在使用scanf("%c",&data);
讀取一個字符時,有時會遇到scanf吞回車符的情況。 這里搜到幾種常用的解決方法:
1.在scanf()中使用’\n’屏蔽回車符號。
scanf("\n%c",&c);
2.在scanf()格式串最前面添加空格,屏蔽回車字符
scanf(" %c",&c); //%c前面加空格,過濾回車
3.在接收字符前,使用getchar()來讀取一次回車符號
getchar(); //專門用來讀取上次輸入的回車符號 scanf("%c",&c);
4.在接收字符前,使用fflush()清空輸入流中緩沖區中的內容
fflush(stdin); //清空輸入流緩沖區的字符,注意必須引入#include<stdlib.h>頭文件 scanf("%c",&c);
C++中輸出字符數組時的常見問題:
例1:
#include<iostream> using namespace std; int main() { char a[8]; for (int i = 0; i < 8; i++) cin >> a[i]; cout << a << endl; return 0; }
運行結果:
分析:輸出時出現漢字亂碼 原因:字符數組里存放內容沒有字符結束標志 ‘\0’
解決方法:
#include<iostream> using namespace std; int main() { char a[8]; for (int i = 0; i < 8; i++) cin >> a[i]; a[8] = '\0'; //最后留一個位置給'\0' cout << a << endl; return 0; }
運行結果:
分析:在字符串的末尾手動加’\0’,此時循環遇到’\0’即結束,不會出現漢字亂碼
例2:
#include<iostream> using namespace std; int main() { char words[] = { 'a', 'b', 'c', 'd', 'e' }; cout << words << endl; return 0; }
同例1情況,字符數組末尾沒有’\0’作為結束,會出現漢字亂碼
解決方法:手動在數組末尾加’\0’
#include<iostream> using namespace std; int main() { char words[] = { 'a', 'b', 'c', 'd', 'e','\0' }; cout << words << endl; return 0; }
以上兩種方法都需要自己手動加’\0’,也可以使用另外兩種系統自動加’\0’的方法
方法1:直接用cin輸入字符數組,最后系統會自動加上\0空字符,且它占數組的一個char內存
#include<iostream> using namespace std; int main() { char a[9]; cin >> a ;//最后會自動加上\0空字符,且它占數組的一個char內存 cout << a << endl; return 0; }
方法2:運用get()函數或getline函數,同樣最后系統會自動加上\0空字符,且它占數組的一個char內存
#include<iostream> using namespace std; int main() { char ch[50]; cin.getline(ch, 30);//可以換成cin.get(ch, 30) cout << ch << endl; return 0; }
原文鏈接:https://blog.csdn.net/weixin_42071236/article/details/128548699
相關推薦
- 2022-02-14 taro將頁面滾動到指定位置
- 2022-11-10 Ant?Design中使用css切換的問題及解決_React
- 2022-01-01 element對穿梭框對接口返回的數據其他字段進行校驗多個校驗
- 2022-08-28 Redis唯一ID生成器的實現_Redis
- 2022-07-03 C#枚舉類型與位域枚舉Enum_C#教程
- 2021-12-11 vite-plugin-mock使用方式
- 2022-04-16 PyCharm實現本地恢復或查看歷史代碼_python
- 2022-05-17 使用@async 注解,導致訪問RequestContextHolder獲取request為空
- 最近更新
-
- 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同步修改后的遠程分支