求会C语的帮一下怎么做

编程实现,用户输入一连串字符(含一个;)后回车,输出在分号
前一共输入了多少个字母、多少个数字、多少个其他字符

![img](https://img-mid.csdnimg.cn/

代码如下:

#include <stdio.h>
int main()
{
    int zm = 0;
    int sz = 0;
    int ot = 0;
    char buf[100]={0};
    int i = 0;
    //gets(buf);
    buf[i] = getchar();
    while( i<100 && buf[i] != ';' )
    {
        if(buf[i] >= 48 && buf[i] <=57)
            sz++;
        else if( (buf[i] >=65 && buf[i] <=90) || (buf[i] >=97 && buf[i] <=122))
            zm++;
        else
            ot++;
          i++;
        buf[i] = getchar();
    }
    printf("字母:%d个,数字%d个,其它字符%d个\n",zm,sz,ot);
    return 0;
}

我不会