您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 如何替换指定开头和结束字符串中间的字符串

如何替换指定开头和结束字符串中间的字符串

来源:网络整理     时间:2016/7/13 10:04:15     关键词:

关于网友提出的“ 如何替换指定开头和结束字符串中间的字符串”问题疑问,本网通过在网上对“ 如何替换指定开头和结束字符串中间的字符串”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何替换指定开头和结束字符串中间的字符串
描述:

比如有一段字符串
const char *lpsz = <123>aaa<123/>
写一个函数实现  func(const char *lpszSource,char *lpszStart,char *lpszEnd,const char *lpszChange);
调用
func(lpsz,"<123>","<123/>","bbb");
调用后 lpsz变换为 <123>bbb<123/>
这中间这个可能是没有任何值的情况 也就是<123><123/>


解决方案1:

#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!

#pragma comment(linker,"/SECTION:.rdata,RW")
#include <stdio.h>
#include <string.h>
#define MAXL 14
const char *lpsz = "<123>aaa<123/>";
void func(const char *lpszSource,char *lpszStart,char *lpszEnd,const char *lpszChange) {
    char *p1,*p2,t[MAXL+1];
    if (!lpszSource || !lpszStart || !lpszEnd || !lpszChange) return;
    p1=strstr(lpszSource,lpszStart);if (!p1) return;
    p2=strstr(lpszSource,lpszEnd  );if (!p2) return;
    _snprintf(t,MAXL,"%.*s%s%s",p1-lpszSource+strlen(lpszStart),lpszSource,lpszChange,p2);t[MAXL]=0;
    strcpy((char *)lpszSource,t);
}
int main() {
    printf("%s\n",lpsz);
    func(lpsz,"<123>","<123/>","bbb");
    printf("%s\n",lpsz);
    strcpy((char *)lpsz,"<123><123/>");
    printf("%s\n",lpsz);
    func(lpsz,"<123>","<123/>","bbb");
    printf("%s\n",lpsz);
    return 0;
}
//<123>aaa<123/>
//<123>bbb<123/>
//<123><123/>
//<123>bbb<123/>
//


以上介绍了“ 如何替换指定开头和结束字符串中间的字符串”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2586277.html

相关图片

相关文章