烟台起重机维修:编写一个函数

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/20 04:43:25
编写一个函数:int substring(char *str,char *sub),判断字符串sub是否是字符串str的子串,若是子串,则返回子串位置,否则返回-1。

int substring(char *str,char *sub)
{
int i=0;
char *s,*t; /*s:指向源的备份指针,t:指向目的的备份指针*/
for (; ;str++,i++)
for (t=sub,s=str; ;)
{
if (*t==0) return i; /*到了目的串尾,所有字符匹配则返回位置*/
if (*s==0) return -1; /*首先发现了源串不够目的串长,则没有必要再找了,返回失败*/
if (*s++!=*t++) break;/*如果不匹配,跳出循环。同时用str++使源串指针后移,用t=sub使目的串恢复*/
}
}

void main()
{
char str1[20]="Chinese";
char str2[30]="in";
printf("%d", substring(str1,str2) );
}

经过TC2调试成功!
int substring(char *str,char *sub)
{
int i,j,flag,issub=1;
if (strlen(sub)>strlen(str)) issub=-1;
else
{
for (i=0;i<(strlen(str)-strlen(sub));i++)
{
flag=i+1;
for (j=0;j<strlen(sub);j++)
{if(*(str+i+j)!=*(sub+j)) {issub=-1;break;}}
if (j==strlen(sub))
{issub=1;break;}
}
if (issub==-1) return -1;
else
return flag;
}
}

main()
{
char str1[20]="Chinese";
char str2[30]="in";
printf("%d", substring(str1,str2) );
}

什么语言

同意楼上的