LinuxC字符串替换函数#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//⼦串位置指针
char *needle;
//临时内存区
char *tmp;
//把源串地址赋给指针dest,即让dest和src都指向src的内存区域
dest = src;
//如果到⼦串, 并且⼦串位置在前len个⼦串范围内, 则进⾏替换, 否则直接返回
while((needle = strstr(dest, oldstr)) && (needle -dest <= len))
{
//分配新的空间: +1 是为了添加串尾的'\0'结束符
tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);
//把src内的前needle-dest个内存空间的数据,拷贝到arr
strncpy(tmp, dest, needle-dest);
//标识串结束
tmp[needle-dest]='\0';
//连接arr和newstr, 即把newstr附在arr尾部, 从⽽组成新串(或说字符数组)arr
strcat(tmp, newstr);
//把src中从oldstr⼦串位置后的部分和arr连接在⼀起,组成新串arr
linux字符串转数组strcat(tmp, needle+strlen(oldstr));
/
/把⽤malloc分配的内存,复制给指针retv
dest = strdup(tmp);
//释放malloc分配的内存空间
free(tmp);
}
return dest;
}
int main()
{
char *str="wo i love iyou";
char *old="i";
char *new="ILOVEYOUYA";
char *dest;
//分配内存空间: ⼤⼩ == src的长度+ newstr和oldstr长度差(可能是正负或0)+1
printf("%s\n",strreplace(dest, str, old, new,1));
printf("%s\n",strreplace(dest, str, old, new,5));
printf("%s\n",strreplace(dest, str, old, new,40));
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论