C语言问题,有些不懂

编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。例如:输入aA12 **,则输出字母个数:2:数字个数:2:空格个数:2;其它字符个数。


#include <stdio.h>

void func(char str[], int *a, int *b, int *c, int *d)
{
    *a = *b = *c = *d = 0;
    for(int i=0; str[i]!='\0'; i++) {
        if((str[i]>='a'&&str[i]<'z')||(str[i]>='A'&&str[i]<'Z')) //字母
            (*a)++;
        else if(str[i]>='0'&&str[i]<'9') //数字
            (*b)++;
        else if(str[i]==' ') //空格
            (*c)++;
        else //其他
            (*d)++;
    }
}

int main()
{
    char str[100];
    int a,b,c,d;
    gets(str);
    func(str,&a,&b,&c,&d);
    printf("%d,%d,%d,%d\n",a,b,c,d);

    return 0;
}
#include <stdio.h>
void func(char *s,int *a,int *b,int *c,int *d)
{
    int i=0;
    while(s[i] != '\0')
    {
        if(s[i] >='a' && s[i] <='z')
            (*a)++;
        else if(s[i] >='A' && s[i] <='Z')
            (*a)++;
        else if(s[i] >='0' && s[i] <='9')
            (*b)++;
        else if(s[i] == ' ')
            (*c)++;
        else
            (*d)++;
        i++;
    }
}
int main()
{
    char s[1001];
    int a=0,b=0,c=0,d=0;
    gets(s);
    func(s,&a,&b,&c,&d);
    printf("字母个数:%d,数字个数:%d,空格个数:%d,其它字符个数:%d",a,b,c,d);
}