自己一直弄不对,有人能出个代码吗

img

#include <stdio.h>
#include<string.h>

void main()
{
    char M[100], C[100], l1, l2, i, j, k;

    printf("主串: \n");   scanf("%s", M);
    printf("子串: \n");   scanf("%s", C);

    l1 = strlen(C);
    l2 = strlen(M);

    j = (l2 - l1);

    for (i = 0; i < j; i++) {
      for (k = 0; k < l2; k++)
        if (M[i + k] != C[k])  break;
      if (k == l1)  break;
    }

    if (i < j) printf("位置: %d\n", i + 1);
    else       printf("主串中不含子串!\n");
}

发现粘贴的有问题,测试过,好用!

img

如果有帮助,请采纳,谢谢!

#include<string.h>

void main()
{
    char M[100], C[100], l1, l2, i, j, k;

    printf("请输入子串: \n");   scanf("%s", C);
    printf("请输入主串: \n");   scanf("%s", M);

    l1 = strlen(C);   
    l2 = strlen(M);   

    j = (l2 - l1);

    for (i = 0; i < j; i++) {
      for (k = 0; k < l2; k++)
        if (M[i + k] != C[k])  break;
      if (k == l1)  break;
    }

    if (i < j) printf("位置: %d\n", i + 1);
    else       printf("主串中不包含子串! \n");
}

有用,请采纳,谢谢!

判断的时候如果碰到了相等的,要用变量把位置记着,因为万一前面几个相同后面又不同了,还要返回这个变量,从这个变量后面开始判断,直到字串=='\0',说明有相同的,返回那个变量的位置,如果主串=='\0',说明不包含
自己不会就看着函数做吧,


#include "string.h"
#include "stdio.h"
int main()
{
char a[100] = "abcdefghijk" ,b[100] = "fgh";//a是主
char* p;
 
p = strstr(a,b);
if(p) printf("%d\n",p-a+1);
return 0;
}

这个还不能用吗