多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
编制一个字符替换函数rep(char *s,char *s1,char *s2),实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替。这里使用指针实现。 - 举个例子: - char s[] = “ABCABC”; - char s1[] = “AB”; - char s2[] = “XY”; - 运行该函数之后,变为”XBYXBY” 那么可以这么想,s1和s2分别位于两个数组中,从s的第一个字符开始,寻找s1中是否有与该元素相等的字符,如果存在该字符,就将s2中相应位置的字符替换成s中的字符。 后面我们使用指针实现的函数也是基于这个道理的。 下面附上我的实现代码: ~~~ #include <stdio.h> #define MAX 100 void rep(char *s,char *s1,char *s2); /** * @brief main 编制一个字符替换函数rep(char *s,char *s1,char *s2), * 实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符 * 代替 * 例如 * char s[] = "ABCABC"; * char s1[] = "AB"; * char s2[] = "XY"; * * 运行该函数之后,变为"XBYXBY" * * @return */ int main(void) { char s[MAX],s1[MAX],s2[MAX]; printf("Please enter the s array:\n"); scanf("%s",&s); printf("Please enter the s1 array:\n"); scanf("%s",&s1); printf("Please enter the s2 array:\n"); scanf("%s",&s2); rep(s,s1,s2); printf("After rep,the array s is:\n"); printf("%s\t",s); return 0; } /** * @brief rep 将字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替 * @param s 源字符串 * @param s1 要被替换的字符 * @param s2 替换的字符 */ void rep(char *s,char *s1,char *s2){ char *p; for(;*s;s++){ for(p = s1;*p && *p!=*s;p++); if(*p){ /** * 这个地方处理的比较好 * p-s1为偏移量,当s2加上相应的偏移量之后; * 就是对应的要被替换的字符 */ *s = *(p-s1+s2); } } } ~~~ 下面是我的程序的运行结果: ![这里写图片描述](https://box.kancloud.cn/2016-05-24_5743c075acbc8.jpg "")