最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux C字符串替换函数实例详解
时间:2022-06-30 16:13:22 编辑:袖梨 来源:一聚教程网
最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下:
实例代码:
代码如下 | 复制代码 |
#include #include /** * * @author: [email protected] * @reference: lovesnow1314@http://community.*cs*d*n.net/Expert/TopicView3.asp?id=5198221 * * 用新子串newstr替换源字符串src中的前len个字符内所包含的oldstr子串 * * @param char* dest 目标串,也就是替换后的新串 * @param const char* src 源字符串,被替换的字符串 * @param const char* oldstr 旧的子串,将被替换的子串 * @param const char* newstr 新的子串 * @param int len 将要被替换的前len个字符 * * @return char* dest 返回新串的地址 * */ char*strreplace(char*dest,char*src,constchar*oldstr,constchar*newstr,size_tlen) { //如果串相等,则直接返回 if(strcmp(oldstr, newstr)==0) returnsrc;
//子串位置指针 char*needle;
//临时内存区 char*tmp;
//把源串地址赋给指针dest,即让dest和src都指向src的内存区域 dest = src;
//如果找到子串, 并且子串位置在前len个子串范围内, 则进行替换, 否则直接返回 while((needle =strstr(dest, oldstr)) && (needle -dest { //分配新的空间: +1 是为了添加串尾的' '结束符 tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);
//把src内的前needle-dest个内存空间的数据,拷贝到arr strncpy(tmp, dest, needle-dest);
//标识串结束 tmp[needle-dest]=' '
//连接arr和newstr, 即把newstr附在arr尾部, 从而组成新串(或说字符数组)arr strcat(tmp, newstr);
//把src中 从oldstr子串位置后的部分和arr连接在一起,组成新串arr strcat(tmp, needle+strlen(oldstr));
//把用malloc分配的内存,复制给指针retv dest = strdup(tmp);
//释放malloc分配的内存空间 free(tmp); }
returndest; }
intmain() { char*str="wo i love iyou"; char*old="i"; char*new="ILOVEYOUYA";
char*dest; //分配内存空间: 大小 == src的长度 + newstr和oldstr长度差(可能是正负或0)+1 printf("%sn",strreplace(dest, str, old,new,1)); printf("%sn",strreplace(dest, str, old,new,5)); printf("%sn",strreplace(dest, str, old,new,40));
return0; } |
相关文章
- 三角洲行动sv98狙击枪怎么改 sv98改装方案 09-11
- 超级忍反攻的斩击涅奥城怎么过关 全收集图文攻略(中上篇) 09-11
- 三角洲行动awm怎么改 awm改装方案全面战场 09-11
- 合金装备3重制版古洛兹尼格拉德武器获取位置 古洛兹尼格拉德武器收集 09-11
- 我的世界青金石有什么用 青金石主要用途介绍 09-11
- 我的世界骨头怎么获得 骨头物品详细信息介绍 09-11