注册 登录
编程论坛 C语言论坛

请大佬们帮忙看一看

不见缘 发布于 2017-11-24 11:39, 842 次点击

将s所指字符串中出现的所有与t1所指字符串相同的字串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同


#include<conio.h>

#include<stdio.h>

#include<string.h>

void fun(char *s,char *t1,char *t2,char *w)

{

char *p,*r,*a;

strcpy(w,s); //字符串复制语句

while(*w)

{

p=w;

r=t1;

while(*r)

if(*r==*p)

{

r++;

p++;

}

else

{

break;

}

if(*r=='\0')

{

a=w;

r=t2;

while(*r)

{

*a=*r;

a++;

r++;

}

}

w++;

}

}

main()

{


char s[100],t1[100],t2[100],w[100];

printf("\nPlease enter string S:");

scanf("%s",s);

printf("\nPlease enter substring t1:");

scanf("%s",t1);

printf("\nPlease enter substring t2:");

scanf("%s",t2);

if(strlen(t1)==strlen(t2)) //字符串长度比较

{

fun(s,t1,t2,w);

printf("\nThe result is:%s\n",w);

}

else

{

printf("\nError :strlen(t1)!=strlen(t2)\n");

}

while(1);

}

根据上面的代码,请编写以下功能的代码:
将s所指字符串中出现的第一个和最后一个与t1所指字符串相同的字串替换成t2所指字符串,所形成的新串放在w所指的数组中,并输出相同字符串的个数。要求t1和t2所指字符串的长度相同。电脑运行以下功能的代码,能够得到正确的运行结果:
2 回复
#2
吹水佬2017-11-24 14:36
#include<stdio.h>
#include<string.h>

int fun(char *s,char *t1,char *t2,char *w)
{
    char *p;
    int count, len=strlen(t1);
    strcpy(w, s);
    for (count=0; (p=strstr(w,t1))!=NULL; ++count)
        memmove(p, t2, len);
    return count;
}

main()
{
    char s[100],t1[100],t2[100],w[100]= {0};
    int count;
    printf("\nPlease enter string S:");
    scanf("%s",s);
    printf("\nPlease enter substring t1:");
    scanf("%s",t1);
    printf("\nPlease enter substring t2:");
    scanf("%s",t2);
    if(strlen(t1)==strlen(t2))
    {
       count = fun(s, t1, t2, w);
       printf("\nThe result is:%d %s\n",count, w);
    }
    else
        printf("\nError :strlen(t1)!=strlen(t2)\n");

}
#3
不见缘2017-11-24 19:50
回复 2楼 吹水佬
谢谢。
1