用C语言实现字符串替换函数.字符串真纠结,该怎么解决
用C语言实现字符串替换函数...字符串真纠结
用C语言实现字符串替换函数。
函数原型为: char *strreplace(char *src, char *sub, char *dst);
将字符串src中sub字符串替换成dst字符串, 返回值为替换后的字符串。
参数说明:
src --- 源字符串
sub --- 被替换的字符串
dst --- 替换的字符串
返回:
替换后输出的字符串。
------解决方案--------------------
用C语言实现字符串替换函数。
函数原型为: char *strreplace(char *src, char *sub, char *dst);
将字符串src中sub字符串替换成dst字符串, 返回值为替换后的字符串。
参数说明:
src --- 源字符串
sub --- 被替换的字符串
dst --- 替换的字符串
返回:
替换后输出的字符串。
------解决方案--------------------
- C/C++ code
#include<stdio.h> #include<string.h> #include <stdlib.h> char *replace(char *src, char *sub, char *dst) { int pos = 0; int offset = 0; int srcLen, subLen, dstLen; char *pRet = NULL; srcLen = strlen(src); subLen = strlen(sub); dstLen = strlen(dst); pRet = (char *)malloc(srcLen + dstLen - subLen + 1);//(外部是否该空间) if (NULL != pRet) { pos = strstr(src, sub) - src; memcpy(pRet, src, pos); offset += pos; memcpy(pRet + offset, dst, dstLen); offset += dstLen; memcpy(pRet + offset, src + pos + subLen, srcLen - pos - subLen); offset += srcLen - pos - subLen; *(pRet + offset) = '\0'; } return pRet; }
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <string.h> char s[256]; char *p; int r,n,i; int main() { while (1) { printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n"); fgets(s,256,stdin); if ('\n'==s[0]) break; p=s; while (1) { p=strstr(p,"%20"); if (p) { memmove(p+1,p+3,strlen(p)-3+1); p[0]=' '; } else break; } p=s; while (1) { p=strstr(p,"你懂得"); if (p) { memmove(p+6,p+6,strlen(p)-6+1); for (i=0;i<6;i++) p[i]='X'; } else break; } printf("%s",s); } return 0; } //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //abcdefg%20helloworld%20something.pdf //abcdefg helloworld something.pdf //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事 //这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事 //请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX": //