C++關(guān)于字符的接收與輸出操作示例
C語言中,在使用scanf("%c",&data);讀取一個(gè)字符時(shí),有時(shí)會遇到scanf吞回車符的情況。 這里搜到幾種常用的解決方法:
1.在scanf()中使用’\n’屏蔽回車符號。
scanf("\n%c",&c);2.在scanf()格式串最前面添加空格,屏蔽回車字符
scanf(" %c",&c); //%c前面加空格,過濾回車3.在接收字符前,使用getchar()來讀取一次回車符號
getchar(); //專門用來讀取上次輸入的回車符號
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é)束,不會出現(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é)束,會出現(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)會自動(dòng)加上\0空字符,且它占數(shù)組的一個(gè)char內(nèi)存
#include<iostream>
using namespace std;
int main()
{
char a[9];
cin >> a ;//最后會自動(dòng)加上\0空字符,且它占數(shù)組的一個(gè)char內(nèi)存
cout << a << endl;
return 0;
}
方法2:運(yùn)用get()函數(shù)或getline函數(shù),同樣最后系統(tǒng)會自動(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)哈希表詳解
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會明白了,最典型的的例子就是字典2022-02-02
Cocos2d-x中實(shí)現(xiàn)彈出對話框示例
這篇文章主要介紹了Cocos2d-x中實(shí)現(xiàn)彈出對話框示例,注意本文代碼中的注釋,本文同時(shí)給出了效果圖,需要的朋友可以參考下2014-09-09
C#桌面應(yīng)用開發(fā)實(shí)現(xiàn)番茄定時(shí)器
本文主要介紹了C#桌面應(yīng)用開發(fā)實(shí)現(xiàn)番茄定時(shí)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
VC程序設(shè)計(jì)中CreateProcess用法注意事項(xiàng)
這篇文章主要介紹了VC程序設(shè)計(jì)中CreateProcess用法注意事項(xiàng),需要的朋友可以參考下2014-07-07
C語言中for循環(huán)問題(一個(gè)小坑需注意)
這篇文章主要給大家介紹了關(guān)于C語言中for循環(huán)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
C語言中進(jìn)行大小寫字母轉(zhuǎn)化的示例代碼
C語言標(biāo)準(zhǔn)庫中提供了用于大小寫轉(zhuǎn)換的函數(shù),使得這一操作變得簡單而高效,本文將詳細(xì)介紹如何在C語言中進(jìn)行大小寫字母的轉(zhuǎn)換,包括相關(guān)的函數(shù)和示例代碼,需要的朋友可以參考下2024-03-03
C++分析如何用虛析構(gòu)與純虛析構(gòu)處理內(nèi)存泄漏
虛析構(gòu)和純虛析構(gòu)共性:可以解決父類指針釋放子類對象,都需要有具體的函數(shù)實(shí)現(xiàn);虛析構(gòu)和純虛析構(gòu)區(qū)別:如果是純虛析構(gòu),該類屬于抽象類,無法實(shí)例化對象2022-08-08

