c语言寻找相同字母的地址


/*11.13.8寻找包含字符地址*/
#include
char* get_s(char*, int);
char* string_in(char*, char*);
int main(void)
{
    char st1[100];
    char st2[100];
    char* p;
    puts("请输入两个字符:\n");
    while (get_s(st1, 100) && gets(st2, 100))
    {
        p=string_in(st1, st2);
        if (p)
            printf("找到了%p,%s\n", p, p);
        else
            printf("没找到\n");
        printf("请输入两个字符:\n");

    }
}
char* get_s(char* st, int n)
{
    char* ret_val;
    int i = 0;
    ret_val = fgets(st, n, stdin);
    if (ret_val)
    {
        while (st[i] != '\n' && st[i] != '\0')
            i++;
        if (st[i] == '\n')
            st[i] = '\0';
        else
            while (getchar() != '\n')
                continue;
    }
    return ret_val;
}
char* string_in(char* st1, char* st2)
{
    char* p = NULL;
    for (int i = 0; i <=strlen(st1); i++)
    {
        for (int j = 0; j <= strlen(st2); j++)
        {
            if (*st2 == *st1)
            {
                p = st2;
                break;
            }
            else {
                st2++;
                continue;
            }
          
        }
        st1++;
    }
    return p;
}

我想实现的是输入两个字符,寻找两个字符中共同含有的字母,并返回字母的地址。
但是代码只能实现当首字母相同的情况,
如果是第二个字母相同则不能返回。

char* string_in(char* st1, char* st2)
{
    char* p = NULL;
    char* st2_start = st2; // 保存 st2 的初始地址
    int count = 0; // 计数器
    for (int i = 0; i <= strlen(st1); i++)
    {
        for (int j = 0; j <= strlen(st2); j++)
        {
            if (*st2 == *st1)
            {
                p = st2_start; // 找到匹配的字符,返回 st2 的起始地址
                count++;
                break;
            }
            else {
                st2++;
                continue;
            }
        }
        st1++;
        st2 = st2_start; // 回到 st2 的初始地址
        if (count == strlen(st2)) // 找到了匹配的字符串
            return p;
        else
            count = 0; // 重置计数器
    }
    return p;
}