C++關(guān)于字符的接收與輸出操作示例
C語(yǔ)言中,在使用scanf("%c",&data);
讀取一個(gè)字符時(shí),有時(shí)會(huì)遇到scanf吞回車符的情況。 這里搜到幾種常用的解決方法:
1.在scanf()中使用’\n’屏蔽回車符號(hào)。
scanf("\n%c",&c);
2.在scanf()格式串最前面添加空格,屏蔽回車字符
scanf(" %c",&c); //%c前面加空格,過濾回車
3.在接收字符前,使用getchar()來讀取一次回車符號(hào)
getchar(); //專門用來讀取上次輸入的回車符號(hào) scanf("%c",&c);
4.在接收字符前,使用fflush()清空輸入流中緩沖區(qū)中的內(nèi)容
fflush(stdin); //清空輸入流緩沖區(qū)的字符,注意必須引入#include<stdlib.h>頭文件 scanf("%c",&c);
C++中輸出字符數(shù)組時(shí)的常見問題:
例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)容沒有字符結(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ù)組末尾沒有’\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; }
到此這篇關(guān)于C++關(guān)于字符的接收與輸出操作示例的文章就介紹到這了,更多相關(guān)C++字符接收與輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++數(shù)據(jù)封裝以及定義結(jié)構(gòu)的詳細(xì)講解
這篇文章主要詳細(xì)講解了C++數(shù)據(jù)封裝以及定義結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解
今天小編就為大家分享一篇關(guān)于C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04Qt實(shí)現(xiàn)簡(jiǎn)易秒表設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)易秒表設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法
這篇文章主要介紹了Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法,分析了GDI貼圖閃爍的常見原因及其具體解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01C語(yǔ)言實(shí)現(xiàn)多項(xiàng)式的相加
這篇文章主要為大家介紹了C語(yǔ)言實(shí)現(xiàn)多項(xiàng)式的相加,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10