關於scanf和cin接收空格字符的比較

1 scanf能接收空格字符

#include<iostream>
#include<string>
#include<stdio.h>
#include<algorithm>

using namespace std;

int main(void)
{
	char s;
//	while(cin>>s)
//	{
//		cout<<s;
//	}
//	cout<<endl;

	while(scanf("%c",&s)!=EOF){
		
		printf("%c",s);
	}
	return 0;
}

運行結果:
在這裏插入圖片描述

2,cin輸入空格後的輸出

#include<iostream>
#include<string>
#include<stdio.h>
#include<algorithm>

using namespace std;

int main(void)
{
	char s;
	while(cin>>s)
	{
		cout<<s;
	}
	cout<<endl;

//	while(scanf("%c",&s)!=EOF){
//		
//		printf("%c",s);
//	}
	return 0;
}

運行結果:
在這裏插入圖片描述

3 小結

   **從運行結果來看cin並未將空格字符壓入到字符變量s中**。

原因參考連接:https://blog.csdn.net/bravedence/article/details/77282039
當cin>>從緩衝區中讀取數據時,若緩衝區中第一個字符是空格、tab或換行這些分隔符時,cin>>會將其忽略並清除,繼續讀取下一個字符,若緩衝區爲空,則繼續等待。但是如果讀取成功,字符後面的分隔符是殘留在緩衝區的,cin>>不做處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章