首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

串的初始化有关问题

2012-08-31 
串的初始化问题#includestdio.h#includestring.h#define MAX 10typedef struct{char data[MAX]int le

串的初始化问题
#include<stdio.h>
#include<string.h>
#define MAX 10
typedef struct{
char data[MAX];
int length;
}String;

int Pattern(String a,String b)
{
int i=0,j=0;
while(i<a.length-b.length)
{
while(j<b.length&&a.data[i]==b.data[i])
{
i++;
j++;
}
if(j<b.length)
{
i=i-j+1;
j=0;
}
else
return i-j;
}
return -1;
}

void main()
{
int a,i=0;
String p;
String q;
strcpy(p.data,"abcde");
p.length=5;
strcpy(q.data,"cd");
q.length=2;
a=Pattern(p,q);
printf("首次出现的位置是:\n");
printf("%d\n",a);
}

求串q在串p中首次出现的位置,究竟问题出在哪里?求指教!!!谢谢!


[解决办法]
没细看程序,试试:
while(j<b.length&&a.data[i]==b.data[j])

[解决办法]

探讨

没细看程序,试试:
while(j<b.length&amp;&amp;a.data[i]==b.data[j])

[解决办法]
好像还有:
while(i<=a.length-b.length)

探讨

没细看程序,试试:
while(j<b.length&amp;&amp;a.data[i]==b.data[j])

[解决办法]
要么就两重循环白,错了,就单步调试一下,如果想提高效率就用kmp算法


或者干脆你调用函数strstr就行了

热点排行