将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串

来源:互联网 发布:淘宝达人推广费多少钱 编辑:程序博客网 时间:2024/05/16 05:37

题目
将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串。

分析:
1.s是源字符串
2.t1为指定字符串,需要在s中找一致的字符串,要找到最后一次完全匹配的字符串
3.t2是所要替换的字符串

代码如下:

/*将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串。*/#include <stdio.h>#include <string.h>void fun(char *s,char *t1,char *t2){    int len1;    int len2;    int len3;    int i,j; // 循环变量     int t=0;    int k=0;    int w;    int x=0;    int c[10]={0};    char temp[100];    len1=strlen(s);    len2=strlen(t1);    len3=strlen(t2);    /*  找出与字符串t1相同的字符串,并记录好位置 */    for(i=0;i<len1;i++)    {        for(j=0;j<len2;j++)        {            if(s[i+j] == t1[j])            {                t++;            }        }        if(t==len2) //  如果t的值和len2相等,则说明字符串匹配成功        {            c[k]=i;                 if(0==i)    //  如果是第一个就出现相同字符串,将其存-1            {                c[k]=-1;    //  便于检查相同字符串是否只是第一个            }               k++;        }        t=0;    //  清零,继续进行下一次匹配    }    for(k=9;k>=0;k--)   //  找出最后一次出现的 所要查找的字符串位置    {        if(c[k]!=0)        {            w=c[k];            if(-1 == c[k])            {                w=0;    //  说明第一个就是相同字符串,需要替换,下标要变成0            }            break;        }    }    /* t1所指字符串相同的子串替换为t2所指字符串 */    for(i=0;i<100;i++)    {        if(i==w)        {            for(j=0;j<len3;j++)            {                temp[x]=t2[j];                x++;            }            i=i+len2;        }        temp[x]=s[i];        x++;    }    strcpy(s,temp);}void main(){    char s[100];    char t1[20];    char t2[20];    puts("请输入源字符串:");    gets(s);    puts("请输入所要查找的字符串:");    gets(t1);    puts("请输入所要替换的字符串:");    gets(t2);    fun(s,t1,t2);    puts(s);    //  输出字符串}

结果为:
这里写图片描述

这里写图片描述

与大家分享,有问题可以一起交流。

0 0
原创粉丝点击