将已知字符串s1中所有与字符串str1相同的字串替换成str2

以下程序所列函数 replace(char *s1,char *s2,char str1,char *str2)的功能是将已知字符串 s1 中
的所有与字符串 str1 相同(2)的子串替换成字符串 str2,并将替换后所生成的新的字符串
存于字符数组 s2 中。
说明:生成字符串 s2 的过程是一个循环,顺序访问字符串 s1 的每个字符(1);当从某个
字符开始不能构成与 str1 相同的子字符时,就把该字符拷贝到数组 s2(3),当从某个字符开
始能构成一个与 str1 相同的子字符串时,就将字符串 str2 的各字符拷贝到字符数组 s2,并
继续访问字符串 s1 中那个子串之后的字符,直至字符串 s1 被访问完毕,字符复制即告结束。

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void replace(char *s1,char *s2,char *str1,char *str2)
{ char *t0,*t1,*t2;
    while(*s1!='\0')
    {
        for(t0=s1,t1=str1;*t1!='\0' && *t0==*t1 ; t0++,t1++);
        if(*t1!='\0')
            *s2++= *s1++; //字符串
        else {
            for(t1=str2;*t1!='\0';)
            *s2++=t1++;
            s1=t0;
        }
    }
    *s2='\0';
    printf("%s",s2);
}
int main()
{ char s1[]="abcdefg ababcd abab.";
    char s2[80];
    replace(s1,s2,"abc","ABCXYZ");

}

以下是用C++编写的函数,实现两个字符串按照词典顺序的比较,同时包含给定的 stringcmp 函数: ```cpp #include <iostream> using namespace std; int stringcmp(char *s1, char *s2) { int i = 0; while (s1[i] != '\0' && s2[i] != '\0') { if (s1[i] < s2[i]) { return s1[i] - s2[i]; } else if (s1[i] > s2[i]) { return s1[i] - s2[i]; } i++; } if (s1[i] == '\0' && s2[i] == '\0') { return 0; } else if (s1[i] == '\0') { return s2[i]; } else { return -s1[i]; } } int main() { char *str1, *str2; str1 = new char[81]; str2 = new char[81]; cin.getline(str1, 80); cin.getline(str2, 80); int cmp = stringcmp(str1, str2); cout << cmp; delete[] str1; delete[] str2; return 0; } ``` 在上面的代码,我们首先定义了一个 stringcmp 函数,该函数与前面的函数实现类似,只是返回值的含义有所改变。 当两个字符不相等时,我们返回两个字符的 ASCII 码差值;当两个字符串某个字符串到达末尾时,我们返回另一个字符的 ASCII 码值;当两个字符串完全相同时,返回 0。 在主函数,我们首先定义了两个 char* 类型的指针 str1str2,然后分别使用 new 运算符分配了 81 个字节的内存空间,用于存储两个字符串。 接下来,我们使用 cin.getline 函数从标准输入读取两个字符串,并调用 stringcmp 函数比较它们的大小,最后输出比较结果。 最后,我们使用 delete[] 运算符释放 str1str2 指向的内存空间,避免内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值