C语言如何选择数组中的几项进行对比

#C语言
现在输入一段字符想选择中间的某一段和另外一段字符进行对比 eg:"minksjdakmin" 和 "min"进行对比,第二段字符不变第一段字符和第二段字符对比,并且能找出第一段代码中有多少第二个字符。希望大家能给些帮忙和提示。

字符串比较可以滑动比较,这是一种比较成型的算法
简单的话就是对第一个字符串遍历的和第二个比较
我去找一下我说的滑动比较

你可以参考如下链接:


如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮

#include <stdio.h>
#include <string.h>
int substring(char *str, char *str1); //函数原型
int main(void)
{
    char str[64] = {0};
    char str1[16] = {0};
    int i, j, x;
    printf("please put the string\n");
    gets(str); //输入的原字符串
    puts(str);
    printf("\n");
    printf("please put the string1 \n");
    gets(str1); //输入的字符串中的子串
    puts(str1);
    printf("\n");
    i = strlen(str);  //原字符串长度
    j = strlen(str1); //子串长度
    printf("the string lenth is %d\n", i);
    printf("the string lenth is %d\n", j);
    x = substring(str, str1);
    printf("then anwser is %d\n", x);
    return 0;
}
int substring(char *str, char *str1)
{
    int x = 0;
    char *p; //任意附个初始值
    do
    {
        p = strstr(str, str1); //1.p指针指向strstr的返回值。3.再一次循环到 这里函数的参数发生变化,p重新指向strstr返回值,如此循环。
        if (p != NULL)
        {
            str = p + 1; //2.str同样指向strstr返回值p的下一个地址。
            x = x + 1;
        }
    } while (p != NULL);
    return x;
}

img

通过字符数组的下标获取子串,使用strcmp方法比较字符串。