C语言中没有提供字符串替换函数,网上能找到的类似函数也只是能替换一个,不能替换全部,工作中却常常要用到这个功能,故实现一个函数。该函数所使用到的相关函数均是自己实现,没有调用库函数。

相关代码如下:

/********************************************************************

*  Function:  my_strstr()

*  Description: 在一个字符串中查找一个子串;

*  Calls:      无;

*  Called By:  无

*  Input:      ps: 源;      pd:子串

*  Output:    无;

*  Return :    0:源字符串中没有子串; 1:源字符串中有子串;

*  Author:      ChenZhiFa

*  Others:      无;

*  date of completion:

*********************************************************************/

char * my_strstr(char * ps,char *pd)

{

char *pt = pd;

int c = 0;

while(*ps != '\0')

{

if(*ps == *pd)

{

while(*ps == *pd && *pd!='\0')

{

ps++;

pd++;

c++;

}

}

else

{

ps++;

}

if(*pd == '\0')

{

//sum++;

return (ps - c);

}

c = 0;

pd = pt;

}

return 0;

}

/********************************************************************

*  Function:  memcpy()

*  Description: 复制一个内存区域到另一个区域;

*  Calls:      无;

*  Called By:  无

*  Input:      src: 源;

count: 复制字节数.

*  Output:      dest: 复制目的地;

*  Return :      dest;

*  Author:      ChenZhiFa

*  Others:      无;

*  date of completion:

*********************************************************************/

void * memcpy(void * dest,const void *src,size_t count)

{

char *tmp = (char *) dest, *s = (char *) src;

while (count--)

*tmp++ = *s++;

return dest;

}

/********************************************************************

*  Function:  str_replace()

*  Description: 在一个字符串中查找一个子串,并且把所有符合的子串用

另一个替换字符串替换。

*  Calls:        memcpy();

*  Called By:    无

*  Input:      p_source:要查找的母字符串; p_seach要查找的子字符串;

p_repstr:替换的字符串;

*  Output:      p_result:存放结果;

*  Return :      返回替换成功的子串数量;

*  Author:      ChenZhiFa

*  Others:      p_result要足够大的空间存放结果,所以输入参数都要以\0结束;

*  date of completion:

*********************************************************************/

int str_replace(char *p_result,char* p_source,char* p_seach,char *p_repstr)

{

int c = 0;

int repstr_leng = 0;

int searchstr_leng = 0;

char *p1;

char *presult = p_result;

char *psource = p_source;

char *prep = p_repstr;

char *pseach = p_seach;

int nLen = 0;

repstr_leng = strlen(prep);

searchstr_leng = strlen(pseach);

do{

p1 = my_strstr(psource,p_seach);

if (p1 == 0)

{

strcpy(presult,psource);

return c;

}

c++;  //匹配子串计数加1;

printf("结果:%s\r\n",p_result);

printf("源字符:%s\r\n",p_source);

// 拷贝上一个替换点和下一个替换点中间的字符串

nLen = p1 - psource;

memcpy(presult, psource, nLen);

// 拷贝需要替换的字符串

memcpy(presult + nLen,p_repstr,repstr_leng);

psource = p1 + searchstr_leng;

presult = presult + nLen + repstr_leng;

}while(p1);

return c;

}

测试代码如下:

#define MAX 200

int main(void)

{

int i = 0;

char s[MAX] ={0};        //存放源字串

char s1[MAX]={0};        //存放子字串

char s2[MAX]={0};        //存放替换字串

char result_a[2000] = {0};//存放替换结果;

char *p,*ptm,*pr;

puts("Please input the string for s:");

scanf("%s",s);

puts("Please input the string for s1:");

scanf("%s",s1);

puts("Please input the string for s2:");

scanf("%s",s2);

ptm = s;

pr = result_a;

i = str_replace(pr,ptm,s1,s2);

printf("替换%d个子字符串;\r\n",i);

printf("替换后结果:%s\r\n",result_a);

system("pause");

}

运行结果如果:

Please input the string for s:

123123123123

Please input the string for s1:

23

Please input the string for s2:

abcdefg

结果:

源字符:123123123123

结果:1abcdefg

源字符:123123123123

结果:1abcdefg1abcdefg

源字符:123123123123

结果:1abcdefg1abcdefg1abcdefg

源字符:123123123123

替换4个子字符串;

替换后结果:1abcdefg1abcdefg1abcdefg1abcdefg

请按任意键继续. . .

linux替换指定字符串函数,C语言实现字符串替换函数相关推荐

  1. python文件定位函数_C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  2. c 语言 内部函数与外部函数,C语言-内部函数与外部函数.doc

    C语言-内部函数与外部函数 吩算彭毙摊鬼笺选瓦瑞疡呐缴识曹研酥腹怕语透逆谓撮渴聋脐壤本精俄漏煎电米履详醋捐丧减掩敷挣煮阜祖锁锨溃睹喉爪冯耍缀示瞎嘴允戏馅径俊窗嚣节愈娶涩睡给峪凄灼助凝棍妻凌瞬诵攻枝溜甥 ...

  3. C++接收字符串数组_C语言处理字符串的7个函数

    C库提供了多个处理字符串的函数,ANSI-C把这些函数的原型放在string.h头文件中.其中最常用的函数有strlen().strcat().strcmp().strncmp().strcpy()和 ...

  4. c++string替换指定位置字符_Excel数据分析:如何替换字符串中的指定字符?

    数据分析预处理中,经常遇到这样的问题:现有字符串中,如何替换指定的部分字符,例如有大量电话号码,现需要将这些号码最后四位替换为****,该如何做呢? 类似的问题和使用场景有很多,如果你的行记录有几千几 ...

  5. c语言中接收字符串函数,C语言中字符串处理函数拾锦

    之前在学习C语言的时候,知道C语言库函数中有很多字符串处理函数,但是没怎么好好利用它.最近,发现它们的作用实在太大了,而且有些是我从来都没有用过的.今天想整理一下,方便以后使用.比较容易理解的,就没有 ...

  6. c语言字符串替换有大小写,(C语言)字符串大小写无关查找替换

    [问题描述] 编写程序将一行英文中指定的字符串替换为另一字符串后输出.注意:查找指定字符串时,大小写无关,而且有可能多次出现. [输入形式] 先从标准输入中分行输入两个英文字符串(每个字符串不为空,长 ...

  7. linux中复制字符串出错,C语言实现字符串的复制的两种方法

    本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...

  8. c语言字符串连接作用,C语言 不使用strcat函数实现连接两个字符串功能代码

    字符串连接函数: 字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串,在字符串处理函数中,strcat  函数具有字符串连接功能.下面是用C语言实现不使用是strcat 函数 ...

  9. java 替换指定位置的字符_java Sting 如何替换指定位置的 字符?

    展开全部 #include #include #include (此处空一行) using namespace std; int main() { string str="123/42165 ...

最新文章

  1. 源码推荐:collectionView拖拽,仿凤凰FM iOS 局部监听键盘再也不会挡住输入框
  2. dom4j读写xml文件
  3. AcWing 703. 数独检查
  4. Java访问对象的属性和行为
  5. python扫题软件_python 实现端口扫描工具
  6. 死锁的充分必要条件、死锁预防、死锁避免、死锁检测和解除
  7. [Bzoj1143][CTSC2008]祭祀river
  8. 解决微信插件wxparse图片大小不能改变的问题
  9. 2021河北计算机专接本考试复习资料
  10. 无线网卡dhcp服务器,ubuntu11.10配置无线网卡dhcp服务器记录(not authoritative for subnet 192.168.1.0问题解决)...
  11. html 播放amr ios,关于iOS设备以amr格式播放音频文件
  12. ElasticSearch之别名_aliases
  13. Distributed System: DFS系列 -- NFS, AFS HDFS(GFS)
  14. HP笔记本功能键(f1-f12)与fn键的使用
  15. Linux 高级调试工具-pstack和strace
  16. 服务器被流量攻击怎么办
  17. 数据可视化--实验五:高维非空间数据可视化
  18. A-小鱼吐泡泡(第二场)
  19. linux下su,su-,sudo命令的区别和用法
  20. 解決:无法加载文件xxx.ps1,因为在此系统上禁止运行脚本...

热门文章

  1. 移动App开发日志开发实例
  2. CSS常用中文字体、字号
  3. html版本绩拼音怎么写,绩的读音_绩的拼音_绩的注音_绩怎么读-98在线字典
  4. 为知笔记服务端docker镜像使用说明
  5. 手把手教学Linux下oracle11g自动化安装脚本编写
  6. android raw获取uri_Android 手机如何拍摄RAW图
  7. 2697v3只支持服务器内存,Intel发布至强E5-2600 v3处理器:18核36线程,支持DDR4内存...
  8. 用physon代码生成一个打飞机小游戏
  9. java.lang.NoClassDefFoundError(这只是其中的两种情况)
  10. 大数据时代已经到来,你了解吗?