最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下:
实例代码:
?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | #include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.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, const char *oldstr, const char *newstr, size_t len) { //如果串相等,则直接返回 if ( strcmp (oldstr, newstr)==0) return src; //子串位置指针 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 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; } |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
远程代码漏洞对广大程序员来并不陌生,远程代码执行是指攻击者可能会通过远程调用的方式来攻击或控制计算机设备,无论该设备在哪里。如果远程代码执行的是一个死循环那服务器的CPU不得美滋滋了。前段时间,Java 界的知名日志框架 Log4j2 发现了远程代码执行漏洞,...
漏洞服务器安全log4j2fastjson
临近元旦,本来大家应该沉浸在一个安静祥和的节日氛围中,但由于有史以来最严重的漏洞CVE-2021-44228(Log4Shell)的出现,整个安全行业立即进入“全年无休模式”。是什么让这个漏洞变得如此特别和可怕?有多大规模的灾难正在等待着我们?我们如何才能避免...
漏洞服务器安全log4j安全漏洞
现在几乎没有任何生意不使用电脑和连接互联网。公司通过他们的官方网站、博客和社交媒体页面保持在线状态。人们使用在线服务进行日常活动,比如银行业务。当然,也有很多企业是完全基于网络的,比如在线市场、电子商务网站和金融服务。所有这些活动都为网络攻击创造了机会。各种威...
服务器安全网络安全Web应用程序