字符计数与行计数
时间:2022-05-11 09:05
字符计数
#include
int main(){
long nc;
nc = 0;
while(getchar()!=EOF)
++nc;
printf("%ld\n",nc);
}
下面是for循环的代码:
#include
int main(){
double nc;
for(nc = 0;getchar()!=EOF;++nc)
;
printf("%.0f\n",nc);
return 0;
}
我对%.0f进行了几个改变分别是%.0f,%f,%.1f,%.2f,下面是结果:
行计数
统计行数等价于统计换行符的个数
#include
int main(){
int c,n1;
n1 = 0;
while((c=getchar())!=EOF)
if(c==‘\n‘)
++n1;
printf("%d\n",n1);
return 0;
}
以上的单引号中的字符表示一个整型值,注意‘\n‘与"\n"的不同,前者单个字符,是个整型数。后者是仅仅包含一个字符的字符串常量。
习题
编写一个统计空格、制表符与换行符的个数的程序
#include
int main(){
int c,n1,n2,n3;
n1 = 0;
n2 = 0;
n3 = 0;
while((c=getchar())!=EOF){
if(c==‘ ‘)
++n1;
if(c==‘\t‘)
++n2;
if(c==‘\n‘)
++n3;
}
printf("空格个数:%d\n",n1);
printf("制表符个数:%d\n",n2);
printf("换行符个数:%d\n",n3);
return 0;
}
编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。
#include
int main(){
int c,n1;
n1 = 0;
while((c=getchar())!=EOF){
if(c==‘ ‘){
++n1;
if(n1>=2){
}else{
putchar(c);
}
}
else{
n1=0;
putchar(c);
}
}
return 0;
}
编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为 \\。这样可以将制表符和回退符以可见的方式显示出来。
#include
int main(){
int c;
while ((c = getchar()) != EOF){
if(c == ‘\t‘)
printf("\\t");
else if (c == ‘\b‘)
printf("\\b");
else if(c == ‘\\‘)
printf("\\\\");
else
putchar(c);
}
return 0;
}
由于我的是win10环境,getchar()读取不了回退符所以我使用了我的docker搭建了kali的系统来测试了:
注意:Ctrl+H是回退符。