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

學無先后,達者為師

網站首頁 編程語言 正文

C++關于字符的接收與輸出操作示例_C 語言

作者:—Miss.?Z— ? 更新時間: 2023-02-14 編程語言

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

欄目分類
最近更新