分类：电脑/网络-程序设计
问题：关于C语言数据结构串的中的replace(s,start,t,v? 
设串采用静态数组存储结构,编写实现串的替换,replace(s,start,t,v),即要求在主串s中,从位置start,开始查找是否存在子串t,若主串s中存在子串t,则用子串v替换子串t 且函数返回1,若主串s中不存在子串t,则函数返回0.并要求设计主函数进行测试.一个测试例子为:s="I am a student",t="student",v="teacher"献上一点分
回答：#include<std.h>#include<stdlib.h>#include<string.h>int replace(char *s,int start,char *t,char *v){    char *getp=NULL,*kp,*kv;    int  ret = 0;    getp = strstr(&s[start],t);    if( getp )    {        int plen=strlen(getp),tlen=strlen(t),vlen=strlen(v);        if( plen>tlen ) memmove(getp+vlen,getp+tlen,plen-tlen+1);        kp = getp, kv = v;        for(; *v ; ++v, ++getp ) *getp = *v;        if( plen==tlen ) *getp = 0;        replace(kp+vlen,0,t,kv);        ret = 1;    }    return(ret);}int main(){    static char sstr[256];    char srcstr[32],dststr[32];    while( gets(sstr) )    {        printf("t=");        gets(srcstr);        printf("v=");        gets(dststr);        if( replace(sstr,0,srcstr,dststr) ) printf("%s\n",sstr);        else printf("Not found sub string: %s\n",srcstr);    }    return(0);}另一个非递归版本的 replaceint replace(char *s,int start,char *t,char *v){    char getstring[256],*p,*getp,*np;    int cnt=0,vlen,tlen;    p = &s[start], np = getstring, tlen = strlen(t), vlen = strlen(v);    for(;;)    {        getp = strstr(p,t);        if( getp )        {            if( getp>p ) memcpy(np,p,getp-p), np+=(getp-p);            memcpy(np,v,vlen);            p = getp+tlen, np +=vlen;            ++cnt;        }        else        {            strcpy(np,p);            break;        }    }    if( cnt ) strcpy(&s[start],getstring);    return( cnt>0 ? 1:0);}