看了楼上很多同志光说不练,也没个正确答案,我就临时写了个,希望能帮到你!
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int m,n,i,j,p=0,k;
printf("请输入一个字符串:");
gets(a);
printf("\n请再输入一个字符串:");
gets(b);
m=strlen(a);
n=strlen(b);
if(m<n)
printf("\n 第一个字符串不包含第二个字符串");
else
{
for(j=0;j<=m-n;j++)
{
k=0;
if(a[j]==b[0])
{
for(i=0;i<n;i++)
{
if(b[i]==a[j+i])
k++;
}
if(k==n)
{
break;
}
}
}
if(k==n)
printf("\n 第一个字符串包含第二个字符串且出现位置为%d个字符开始",++j);
else
printf(" 第一个字符串不包含第二个字符串");
printf("\n\n");
}
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <string.h>
void main()
{
char s1[50]; //那个较长的字符串
char s2[30];
int len1, len2, i, j;
gets(s1);
gets(s2);
len1 = strlen(s1);
len2 = strlen(s2);
for(i = 0; i <= len1-len2; i++) //只需i从0到len1-len2即可
{
if(s1[i] == s2[0]) //这段代码是在判断s2是不是在s1中
for(j = 1; j < len2; j++)
{
if(s1[i+j] != s2[j])
break;
}
if(j == len2)
{
printf("%d\n",i+1);
break;
}
}
if(i > len1-len2)
printf("The second string is not contained in string 1\n");
}
----------------解决方案--------------------------------------------------------