输入3行字符统计其中的字母,数字,空格和其他字符的个数。(strcat())
字符串数组
#include <stdio.h>
int main()
{
char s[100];
int letter=0,space=0 ,digit=0,other=0;
gets(s);
statistic(s,&letter,&space ,&digit,&other);
gets(s);
statistic(s,&letter,&space ,&digit,&other);
gets(s);
statistic(s,&letter,&space ,&digit,&other);
printf("lettle:%d,digit:%d,space:%d,other:%d\n",letter,digit,space,other);
return 0;
}
一个简单的实现:
#include <stdio.h>
#include <string.h>
//初始化字符数组为空字符数组
void cleanCharArr(char arr[],int len){
int i ;
for(i=0;i<len;i++){
arr[i]= '\0';
}
}
int main(void){
int letters = 0; //字母个数
int numbers = 0; //数字 个数
int spaces = 0; //空格个数
int other = 0; //其他字符个数
int i ; //控制行数 变量
int j ; //每行临时字符数组下标
char c ; //用于临时存储每个输入字符
char a[100]; //每行字符临时存储字符数组
char all[300]; //所有字符存储字符数组
cleanCharArr(a,100); //初始化字符数组a
cleanCharArr(all,300); //初始化字符数组all
while(i<3){ //控制输入3行
j=0; //指向数组a的第一个字符位置
while((c=getchar())!='\n'){ //依次读取每行字符到字符变量c,直到每行的末尾换行符不读取
a[j]=c; //依次存入读取的字符到每行临时字符数组
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){ //如果是字母
letters++;
}else if(c>='0'&&c<='9'){ //如果是数字
numbers++;
}else if(c==' '){ //如果是空格
spaces++;
}else{ //其他字符
other++;
}
j++; //指向存储每行字符的临时字符数组的下一个位置
}
i++; //开始读取下一行字符输入
strcat(all,a); //把每行字符拼接到字符数组all
cleanCharArr(a,100); //再次初始化字符数组a
}
//打印结果
printf("输入的所有的字符:%s\n",all);
printf("字母:%d,数字:%d,空格:%d,其他字符:%d\n",letters,numbers,spaces,other);
return 0;
}