输入3行字符统计其中的字母,数字,空格和其他字符的个数。(strcat()) 字符串数组

输入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;
}