日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

C++關(guān)于字符的接收與輸出操作示例_C 語(yǔ)言

作者:—Miss.?Z— ? 更新時(shí)間: 2023-02-14 編程語(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

欄目分類(lèi)
最近更新