编写函数,统计字符串s中指定子串s1出现的次数,并将指定子串s1替换成新的子串s2。

a.题已经完成并正确,但老师要求使用函数调用

b.第二步我复制了两次,老师说可以在简化简化

c.尽量在原程序上更改,通俗易懂

#include <stdio.h>
#include <string.h>
void main()
{
    char s[300],s1[50],s2[60],a[300];
    int m,n,i,j,k,num=0;
    printf("Input strings s,s1,s2:\n");
    scanf("%s%s%s",s,s1,s2);
    m=strlen(s1);
    n=strlen(s2);
for(i=0;s[i]!='\0';i++)
{
for(j=i,k=0;s[j]==s1[k];j++,k++)
{
        if(s1[k+1]=='\0')
        num++;
}
}
    for(j=i=0;s[i];i++)
{
        if(strncmp(s+i,s1,m)==0)
{
            strcpy(a+j,s2);
            j+=n;
            i+=m-1;
        }
        else a[j++]=s[i];
    }
    a[j]='\0';
    strcpy(s,a);
printf("s1在s出现的次数为%d\n",num);
    printf("替换成的结果为:%s\n",s);
    return 0;
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^