Linux C字符串替换函数实例详解

 更新时间:2017年01月28日 09:48:05   投稿:lqh  
这篇文章主要介绍了Linux C字符串替换函数实例详解的相关资料,需要的朋友可以参考下

Linux C字符串替换函数实例详解

               最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下:

实例代码:

#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;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Linux系统下部署项目的设置方法

    Linux系统下部署项目的设置方法

    这篇文章主要介绍了Linux系统下部署项目的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 一文详解Linux三种网络设置方式

    一文详解Linux三种网络设置方式

    我们在使用虚拟机搭建linux系统后,常常需要设置系统网络连接,以方便系统进行上网或其他系统连接系统进行操作,在linux中网络连接分了三类:桥接模式,仅主机模式,NAT模式,本文我们将对这三种模式进行讲解,感兴趣的同学可以参考阅读
    2023-06-06
  • Linux下简易进度条的实现代码

    Linux下简易进度条的实现代码

    下面小编就为大家带来一篇Linux下简易进度条的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Linux使用crontab实现定时拆分日志与清理过期文件

    Linux使用crontab实现定时拆分日志与清理过期文件

    crontab是一个用于管理定时任务的工具,可以让在特定的时间间隔内自动运行脚本或命令,本文将使用crontab实现定时拆分日志与清理过期文件,需要的可以参考下
    2024-04-04
  • Centos 7.4中的远程访问控制的实现方法

    Centos 7.4中的远程访问控制的实现方法

    这篇文章主要介绍了Centos 7.4中的远程访问控制的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • SpringBoot + Vue 项目部署上线到Linux 服务器的教程详解

    SpringBoot + Vue 项目部署上线到Linux 服务器的教程详解

    这篇文章主要介绍了SpringBoot + Vue 项目部署上线到Linux 服务器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 查看Linux OS内核与版本的几种命令分享

    查看Linux OS内核与版本的几种命令分享

    文章总结了四种在Linux操作系统中查看内核和版本的方法,并强调了个人经验的价值,鼓励大家参考和使用
    2024-11-11
  • Centos7下用户登录失败N次后锁定用户禁止登陆的方法

    Centos7下用户登录失败N次后锁定用户禁止登陆的方法

    这篇文章主要给大家介绍了关于在Centos7系统下用户登录失败N次后锁定用户禁止登陆的相关资料,文中先对PAM的配置文件进行了简单的介绍,然后通过示例代码将实现的方法介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友们下面随着小编来一起看看吧。
    2018-01-01
  • linux下如何创建守护进程的步骤

    linux下如何创建守护进程的步骤

    本篇文章主要介绍了linux下如何创建守护进程的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Linux/Unix关于时间和时间戳的命令行

    Linux/Unix关于时间和时间戳的命令行

    这篇文章主要介绍了Linux/Unix关于时间和时间戳的命令行以及输出的样式区别,一起来学习下吧。
    2017-12-12

最新评论