C语言高手请进! 50

1.这里有求子串位置的算法,怎么写成C语言可以上机运行啊?intIndex(SStringS,SStringT,intpos){i=pos;j=1;while(i<=S[... 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,不过我没有运行出来.
展开
 我来答
_me
2006-04-19 · TA获得超过839个赞
知道答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
strchr(查找字符串中第一个出现的指定字符)
相关函数
index,memchr,rinex,strbrk,strsep,strspn,strstr,strtok
表头文件
#include<string.h>
定义函数
char * strchr (const char *s,int c);
函数说明
strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include<string.h>
main()
{
char *s="0123456789012345678901234567890";
char *p;
p=strchr(s,'5');
printf("%s\n",p);
}
执行
56789012345678901234567890

strstr(在一字符串中查找指定的字符串)
相关函数
index,memchr,rindex,strchr,strpbrk,strsep,strspn,strtok
表头文件
#include<string.h>
定义函数
char *strstr(const char *haystack,const char *needle);
函数说明
strstr()会从字符串haystack 中搜寻字符串needle,并将第一次出现的地址返回。
返回值
返回指定字符串第一次出现的地址,否则返回0。
范例
#include<string.h>
main()
{
char * s="012345678901234567890123456789";
char *p;
p= strstr(s,"901");
printf("%s\n",p);
}
执行
901234567890123456789
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
踏岸寻柳
2006-04-20 · TA获得超过6912个赞
知道小有建树答主
回答量:1776
采纳率:0%
帮助的人:630万
展开全部
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)strlen(srcStr)-iPos+1;

strncpy(subStr, &buffer[iPos-1], iLen);
subStr[iLen] = '\0';

return subStr;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心灰意冷bjh
2006-04-19 · TA获得超过329个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:244万
展开全部
写个main函数 在里面调用就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c090aec58
2006-04-19 · TA获得超过198个赞
知道答主
回答量:187
采纳率:0%
帮助的人:0
展开全部
写个main函数也调试不出来
它还有好多条件都没有给出来,如SString S这里的SString 是什么?这个也是要写的pos是什么?也没有写出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式