输入三个字符串a,b和c,将a中b的第一次出现替换为c

作者在 2011-03-26 19:38:00 发布以下内容
字符串替换 时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

输入三个字符串a,b和c,将a中b的第一次出现替换为c。

输入:

输入三行,每行一个字符串,字符串长度不超过255。

输出:

如果b有出现在a中,输出替换后的字符串。

输入样例:

abcdefgh
cde
Xiaolan

输出样例:

abXiaolanfgh

提示:

所有字符串只包含英文字母。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    char a[300],b[100],c[100],d[500];
    int i,stage,n;
    char *p1,*p2,*p3,*q1,*q2;
    gets(a);
    gets(b);
    gets(c);
    p1=a;
    p3=c;n=1;
    while((*p1)!='\0')//判断匹配
    {
        p2=b;q2=p1;
        stage=1;
        while(*p2!='\0')
        {
           if(*p2!=*q2)
           {
            stage=0;
            break;
           }
           p2++;q2++;
        }
        if(stage==1)
        {
            q1=q2;//找到a中与b匹配的最后一个字符的下一个址
            break;
        }
       p1++;
       n++;//找到与b匹配的第一个字符的位置
    }
    p1=a;
    for(i=0;i<n-1;i++)//匹配的第一个字符的位置的赋给d
    {
        d[i]=*p1;
        p1++;
    }
    for(i=i;*p3!='\0';i++)//把c连在d后面
    {
        d[i]=*p3;
        p3++;
    }
    for(i=i;*q1!='\0';i++)//把a中与b匹配的最后一个字符之后的连在新d之后
    {
        d[i]=*q1;
        q1++;
    }
    d[i]='\0';//给d字符串一个末尾(结束符'\0')
    printf("%s\n",d);
    return 0;
}
默认分类 | 阅读 2372 次
文章评论,共0条
游客请输入验证码
浏览70062次