以下是我改过的程序,可还是有问题,主要问题有:
ch1:abababc ch2:abc
ch1:abc ch2:c
这两种情况,系统会提示ch2不在ch1中,请高手帮助,我实在搞不出来了,谢谢
//字符串与字符串比较
#include<stdio.h>
int mystrsubstring(char *p,char *q);
void main()
{
int n=0;
char ch1[30],ch2[30],*p,*q;
p=ch1,q=ch2;
printf("请输入第一个字符串:");
gets(ch1);
printf("请输入第二个字符串:");
gets(ch2);
n=mystrsubstring(ch1,ch2);
if(n>=0)
{
printf("数组2在数组1的下标为:%d\n",n);
}
if(n<0)
{
printf("数组2不在数组1中!\n");
}
}
int mystrsubstring(char *p,char *q)
{
int i=0,j=0,m=0,value,temp,temp1;
while(q[i]!='\0') //判断数组q是否到达最后一项'\0'
{
if(q[0]==p[i]) //判断数组q的第一个值是否与数组p的某一项相等
{
temp=i; //记录数组p的哪一项与数组q的第一项相等
temp1=i;
j=0;
while(q[j]!='\0') //判断数组q是否到达最后一项'\0'
{
if(q[j]!=p[temp]) //判断数组q与数组p的对应项是否相等
{
i=temp1;
break;
}
else
{
j++;
temp++;
}
}
}
else
{
m=0,j=0;
while(q[j]!='\0') //判断数组q是否到达最后一项'\0'
{
if(q[j]!=p[m]) //判断数组q与数组p的对应项是否相等
{
m++;
}
else
{
m++;
j++;
}
}
}
i++;
}
if(q[j]=='\0') //判断是否已经到达数组q的最后一项
{
value=temp1;
}
else
{
value=-1;
}
return value;
}
[此贴子已经被作者于2007-4-18 16:13:23编辑过]