首页 > 其他分享 >C语言 replace循环替换

C语言 replace循环替换

时间:2023-10-23 12:33:48浏览次数:39  
标签:src old 替换 C语言 char new replace newstr buff

注意:字符串长度可自行定义;可以增加字符串长度判断,防止溢出。
// 方法一 int replace(char *src,char *old,char *new) { char buff[2048]; //转换缓冲区 memset(buff,0,sizeof(buff)); for(int i = 0;i < strlen(src);i++){ //查找目标字符串 if( !strncmp( src+i , old , strlen(old) ) ){ // 比对old成功,将new放入buff中 strcat(buff,new); // 跳过old字符串 i += strlen(old) - 1; }else{ // 将未比对成功的存在buff中 strncat(buff,src + i,1); } } // 将buff赋值给src strcpy(src,buff); return 0; } // 方法二 int replace(char *src,char *old,char *new) { char *p = NULL; int len = 0; char newstr[2048] = {0};   // 查找src中old的位置 p = strstr(src,old); while(p){ // 循环查找old,直至查询不到 memset(newstr,0x0,sizeof(newstr));      // src首位到old位置的长度 len = p - src;      // 将old前面的字符串复制到newstr中 strncpy(newstr,src,len); // 将new拼接到newstr中 strcat(newstr,new); // 将old后面的字符串复制到newstr中 strcat(newstr,p+strlen(old)); // 将newstr赋值给src strcpy(src,newstr); // 再次查找src中old的位置 p = strstr(src,old); } return 0; }

 

标签:src,old,替换,C语言,char,new,replace,newstr,buff
From: https://www.cnblogs.com/ConfusedLamb/p/17782140.html

相关文章

  • c语言代码练习31
    问:Sn=a+aa+aaa+aaaa+aaaaa,a是数字#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intAyue(inta){intSn=0;inti=0;intsum=0;for(i=0;i<5;i++){Sn=Sn*10+a;sum+=Sn;}return......
  • c语言训练4
    #求圆的面积与周长输入球的半径,输出圆的面积与周长,中间用空格隔开(结果保留6位小数)(代码后面都会有适当解释的哈)例如:输入:2输出:28.27431018.849540代码:#include<stdio.h>#include<stdlib.h>#definePI3.14159//定义一个PI,用PI代替3.14159,但注意定义的位置以及      ......
  • c语言训练5
    #已知三角形的底和高,求其面积例如:输入:42输出:4代码:#include<stdio.h>#include<stdlib.h>intmain(){  inta,b,S;  scanf("%d%d",&a,&b);  S=a*b/2;  printf("%d",S);  return0;}......
  • C语言char运算
    1、C语言中char类型是按照整型存储的,范围在-127~127,对应于字符本身的ASCII码。如charc='1';printf("%d",c*2);printf("%c",c*2);字符'1'对应的ASCII码值为49,输出为98b98对应字符'b'。 2、如果超出范围,如charc=310;printf("%d\n",c);p......
  • 实验2 c语言分支与循环基础应用编程
    task11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN246589intmain()10{11intnumber;12inti;13srand(time(0));//以当前系统时间作为随机种子14for(i=0;i<N;......
  • 【C语言】j<=9和j<=n的区别
    一起学习,一起进步@放纵lili以下都是我自己学习过程的领悟:想出讲这一点,是因为我在学习过程中遇到了这个问题,但无处求解,之后自己给领悟了,就想分享出来。为了讲得更清楚一点,我以一个编程“九九乘法表为例”,来讲解其中的j<=9和j<=n的区别,同时也会增强我们对于循环的理解。一、首先先看......
  • 实验2_C语言分枝与循环基础应用编程
    试验任务1task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1374#defineN2465intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=r......
  • c语言训练1
    #加法输入两个数字,输入的两个数用空格隔开,输出两个数字的和#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(){  inta,b;  scanf("%d%d",&a,&b);  printf("%d",a+b);  return0;}......
  • c语言训练2
    #a+b=c输入两个数据a,b,计算它们的和并以a+b=c的形式输出(输入的两个数据用空格隔开)例如:输入:23输出:2+3=5#include<stdio.h>#include<stdlib.h>intmain(){  inta,b,c;  scanf("%d%d",&a,&b);  c=a+b;  printf("%d+%d=%d",a,b,c);  return0;}......
  • c语言训练3
    #正向输入,方向输出输入a,b,c,反向以c,b,a的形式输出例如:输入:123输出:321#include<stdio.h>#include<stdlib.h>intmain(){  inta,b,c;  scanf("%d%d%d",&a,&b,&c);  printf("%d%d%d",c,b,a);  return0;}大家注意输出时要用空格隔开......