求子串在母串中出现的次数,这个代码哪错了?

#include<stdio.h>
int str_count(char *string,char *substring);
int main()
{
char str[100],substr[20];
int count;
printf("Please input a string:");
gets(str);
printf("Please input a substring:");
gets(substr);
count=str_count(str,substr);
printf("The count is %d",count);
return 0;
}
int str_count(char *string,char *substring)
{
int i,j,k;
int count=0;
for(i=0;string[i]!='\0';i++)
{
for(j=i,k=0;substring[k]==string[j];k++,j++)
{
if(substring[k++]=='\0')
{
count++;
break;
}
}
}
return count;
}


#include<stdio.h>
int str_count(char* string, char* substring);
int main()
{
    char str[100], substr[20];
    int count;
    printf("Please input a string:");
    gets_s(str);
    printf("Please input a substring:");
    gets_s(substr);
    count = str_count(str, substr);
    printf("The count is %d", count);
    return 0;
}
int str_count(char* string, char* substring)
{
    int i, j, k;
    int count = 0;
    for (i = 0; string[i] != '\0'; i++)
    {
        for (j = i, k = 0; substring[k] == string[j]; k++, j++)
        {
            if (substring[k+1] == '\0')
            {
                count++;
                break;
            }
        }
    }
    return count;
}

substring[k++]=='\0' 此处k++错误,不需要++,
判断时指针也向后偏移一位,相当与一次循环后移了两位,两个字符串自然对不上了。