網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
C語(yǔ)言中,在使用scanf("%c",&data);
讀取一個(gè)字符時(shí),有時(shí)會(huì)遇到scanf吞回車(chē)符的情況。 這里搜到幾種常用的解決方法:
1.在scanf()中使用’\n’屏蔽回車(chē)符號(hào)。
scanf("\n%c",&c);
2.在scanf()格式串最前面添加空格,屏蔽回車(chē)字符
scanf(" %c",&c); //%c前面加空格,過(guò)濾回車(chē)
3.在接收字符前,使用getchar()來(lái)讀取一次回車(chē)符號(hào)
getchar(); //專(zhuān)門(mén)用來(lái)讀取上次輸入的回車(chē)符號(hào) scanf("%c",&c);
4.在接收字符前,使用fflush()清空輸入流中緩沖區(qū)中的內(nèi)容
fflush(stdin); //清空輸入流緩沖區(qū)的字符,注意必須引入#include<stdlib.h>頭文件 scanf("%c",&c);
C++中輸出字符數(shù)組時(shí)的常見(jiàn)問(wèn)題:
例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; }
運(yùn)行結(jié)果:
分析:輸出時(shí)出現(xiàn)漢字亂碼 原因:字符數(shù)組里存放內(nèi)容沒(méi)有字符結(jié)束標(biāo)志 ‘\0’
解決方法:
#include<iostream> using namespace std; int main() { char a[8]; for (int i = 0; i < 8; i++) cin >> a[i]; a[8] = '\0'; //最后留一個(gè)位置給'\0' cout << a << endl; return 0; }
運(yùn)行結(jié)果:
分析:在字符串的末尾手動(dòng)加’\0’,此時(shí)循環(huán)遇到’\0’即結(jié)束,不會(huì)出現(xiàn)漢字亂碼
例2:
#include<iostream> using namespace std; int main() { char words[] = { 'a', 'b', 'c', 'd', 'e' }; cout << words << endl; return 0; }
同例1情況,字符數(shù)組末尾沒(méi)有’\0’作為結(jié)束,會(huì)出現(xiàn)漢字亂碼
解決方法:手動(dòng)在數(shù)組末尾加’\0’
#include<iostream> using namespace std; int main() { char words[] = { 'a', 'b', 'c', 'd', 'e','\0' }; cout << words << endl; return 0; }
以上兩種方法都需要自己手動(dòng)加’\0’,也可以使用另外兩種系統(tǒng)自動(dòng)加’\0’的方法
方法1:直接用cin輸入字符數(shù)組,最后系統(tǒng)會(huì)自動(dòng)加上\0空字符,且它占數(shù)組的一個(gè)char內(nèi)存
#include<iostream> using namespace std; int main() { char a[9]; cin >> a ;//最后會(huì)自動(dòng)加上\0空字符,且它占數(shù)組的一個(gè)char內(nèi)存 cout << a << endl; return 0; }
方法2:運(yùn)用get()函數(shù)或getline函數(shù),同樣最后系統(tǒng)會(huì)自動(dòng)加上\0空字符,且它占數(shù)組的一個(gè)char內(nèi)存
#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
相關(guān)推薦
- 2022-08-19 MapReduce讀取定長(zhǎng)文件入庫(kù)Hive表Orc格式
- 2022-05-22 關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬(wàn)能頭文件)_C 語(yǔ)言
- 2022-04-18 后端接口返回一個(gè)圖片地址,前端h5,pc瀏覽器,下載圖片文件,而不是預(yù)覽
- 2022-10-04 正則表達(dá)式中關(guān)于對(duì)原生字符串的簡(jiǎn)單理解_正則表達(dá)式
- 2022-06-17 一文輕松了解ASP.NET與ASP.NET?Core多環(huán)境配置對(duì)比_實(shí)用技巧
- 2023-06-04 React中的合成事件是什么原理_React
- 2022-12-15 Python爬蟲(chóng)庫(kù)urllib的使用教程詳解_python
- 2023-02-15 Python二進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù)學(xué)算法詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支