大佬 为什么老是0次数啊

#include<stdio.h>
#include<string.h>
int  panduan(char *str  ,char  x);

void  main()
{
    char  zimu[100];
    char  zi;
    printf("请输入字母");
    gets(zimu);
    gets(zi);
    panduan(zimu  ,  zi);
        printf("次数  =  %d",  panduan(zimu  ,  zi));
}
int  panduan(char *str  ,  char  x)
{
    int  i  ,  leng  ,  cishu  =  0;
    leng  =  strlen(str);
    for(  i  =  0  ;  i  <  leng  -  1
      ;  i++)
    {
        if(str[i]   !=  x )
        {

        }
         else
            cishu++;
    }
    return  cishu;
}
//目的是输入一串字母,再输入一个字母判断这个字母在这串字符中出现的次数

 

#include<stdio.h>
#include<string.h>
int  panduan(char *str  ,char  x);
void  main()
{
    char  zimu[100];
    char  zi;
    printf("请输入一行字符串:");
    gets(zimu);
    printf("请输入一个字符:");
    zi = getchar();
    panduan(zimu  ,  zi);
    printf("次数  =  %d",  panduan(zimu  ,  zi));
}
int  panduan(char *str  ,  char  x)
{
    int  i  ,  leng  ,  cishu  =  0;
    leng  =  strlen(str);
    for(  i  =  0  ;  i  <  leng  -  1
      ;  i++)
    {
        if(str[i]   !=  x )
        {
        }
         else
            cishu++;
    }
    return  cishu;
}
//目的是输入一串字母,再输入一个字母判断这个字母在这串字符中出现的次数


// Output
请输入一行字符串:ASDFGABCDEFQAZAAABBBCCCDDDAA                                                                                                                                     
请输入一个字符:A                                                                                                                                                                  
次数  =  7 

主要是zi是定义喂一个字符,gets(zi)造成越界,后果不课预计。应该定义为u字符数组或者用getchar()函数只读一个字符。你看我修改后的代码运行通过了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^