怎么去统计一个字符串的个个字母的个数啊 ,总数统计我会但是单个就不知道怎么操作了

比如输入一下 abcdddszxcaad求a,b,c个个字母的个数

你好,代码已经给出,请耐心分析代码中的逻辑,详细注释已经给出,方法多样,我这个只是其中一种,码字不易,望采纳!

const char * count_char_num(const char * ptr)
{
    if(NULL == ptr) //空字符串,根本不需要算
        return ptr;
    char *str = (char*)malloc(strlen(ptr)+1);  //记录已经记录过个数的字符,strlen需要调用#include<string.h>
                                                //strlen求一个字符串的长度,加一是因为strlen没有把字符串最后面的'\0'算进去
    char *left = str;
    char *right = str; //代替str进行循环
    int number = 1; //记录个数,初始化为1是因为计数时第一个出现的字符没有算进去
    const char *pl = ptr;
    const char *pr = ptr + 1;

    while(1){
        while(left != right){ //进入是否已经算过的判断语句,注意:第一次并不会进入这个while循环,因为第一次
                              //str字符串并未存入字符,此时left和right指向的地址是一样的
            if((*left) == (*pl)){
                if( *(pl+1) == '\0') //如果相等,且已经到了最后一个字符,结束函数
                    return ptr;
                left = str; //如果相等,但没到最后一个字符,函数继续,left重置便于下次判断
                ++ pl; //右移,判断下一位
            }
            else
                ++ left;   //当前不相等,则往下比                          
        }
        //只要出来while函数,即代表存在还未计数的字符
        left = str; //left重置
        pr = pl + 1; 
        
        //还没算过,记录
        (*right) = (*pl);
        ++ right;

        //开始计算
        //此时pr=pl+1
        while((*pr) != '\0'){
            if((*pl) == (*pr))
                ++ number;
            ++ pr;
        }
        printf("%c出现了%d次\n",*pl,number);
        number = 1; //重置number为1
        ++ pl; //右移,当前字符已经计算完毕,继续判断下一个字符
    }
    return ptr;
}

int main()
{
    const char * p = "aaccaabbdddbb";
    count_char_num(p);
    return 0;
}

你可以写俩数组
mySmallLettercount[26];
myBigLettercount[26];

里头全是0
取出每个位置的字符 strzifu
判断是大写还是小写
if(strzifu>'a' && strzifu<'z')
mySmallLettercount[strzifu-‘a’]++;

strzifu-‘a’ 就是小写字母应该对应的计数位置了
同理 大写字母也可以这样计数了