统计制表符、空格和换行符的个数

今天帮助一个同学写了一个程序,分享一下
题目要求:
分别统计标准输入下的空格、制表符、以及回车符各个数(输入以Ctrl+z结束)
知识普及:
换行符 \n的ASCLL的值为10
空格符" "的ASCLLde值为23
制表符\t一般是tab键(包含4个或者8个空格)ASCLL值为9
要求用Crtl+z结束输入。
为什么是Crtl+z呢?
其实本质结束是EOF这个符号,在window这个系统中Crtl+z就是EOF的快捷键.
EOF:在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
上代码:

#include
using namespace std;
int main(){
     
	int n ,m,i;
	n = m = i =0;
	char a;
	do{
     
		a = getchar();
		if(a == 9 )m++;//制表符ASCLL
		if(a == 32)n++;//空格符ASCLL 
		if(a == 10)i++;//换行符ASCLL 
	}while(a!=EOF);//Crtl+z结束输入 
	cout<<"制表符的个数为: "<<m<<"\n空格符的个数为: "<<n<<"\n换行符的个数为: "<<i; 
	return 0;
} 

同学不想用do{}while();就改成一下代码

#include
using namespace std;
int main(){
     
	int n ,m,i;
	n = m = i =0;
	char a;
	while(a = getchar() != EOF){
     
		a = getchar();
		if(a == 9 )m++;//制表符ASCLL
		if(a == 32)n++;//空格符ASCLL 
		if(a == 10)i++;//换行符ASCLL 
	}
	cout<<"制表符的个数为: "<<m<<"\n空格符的个数为: "<<n<<"\n换行符的个数为: "<<i; 
	return 0;
}

EOF和getchar()用法

你可能感兴趣的:(随笔,c语言,c++,eof)