#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");
}
发现粘贴的有问题,测试过,好用!
如果有帮助,请采纳,谢谢!
#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;
}
这个还不能用吗