C语言高手请进!

来源:百度知道 编辑:UC知道 时间:2024/05/08 11:32:30
1.这里有求子串位置的算法,怎么写成C语言可以上机运行啊?
int Index(SString S,SString T,int pos)
{i=pos;j=1;
while(i<=S[0] && j<=T[0])
{if(S[i]==T[j]){++i;++j;}
else{i=i-j+2;j=1;}
}
if(j>T[0])return 0;
}
2.求子串的算法,怎样写C程序运行啊?
Status SubString(SString &Sub,SString S,int pos,int len)
{if(pos<1‖pos>S[0]‖len<0‖len>S[0]-pos+1)
return ERROR;
Sub[1..len]=S[pos..pos+len-1];
Sub[0]=len;return OK;
}
做出来可以运行出结果的,再加50分!
加上主函数及必要的结构体变量定义,写出完整的C程序.
能运行出结果的,追加100分!急需高手的帮忙啊,我还有好几个算法,不懂怎么写全程序运行呢!
谢谢三楼的_me,不过我没有运行出来.

1. 求子串位置的算法
不用什么算法,直接用C语言里面的strstr即可。
原型:
char *strstr(const char *s1, const char *s2);

如果一定要自己写的话,这样:
int Index(char *haystack, char *needle, int *pos)
{
char *p = haystack;
char *p1, *p2;

if ( !*needle )
return((char *)haystack);

while(*p)
{
p1 = p;
p2 = (char *) needle;

while( *p1 && *p2 && (*p1++==*p2++) );

if (!*p2)
{
*pos = p - haystack;
return *pos;
}

p++;
}

return -1;
}

2. 求子串的算法
char *SubString(char *subStr, int iPos, int iLen)
{
char *srcStr = buffer;
if( srcStr==NULL )
return NULL;

if( iPos<1 || iPos>(int)strlen(srcStr) || iLen<1 )
return NULL;
if( iLen>(int)strlen(srcStr)-iPos+1 )
iLen = (int)s