C语言 replace循环替换

发布时间 2023-10-23 12:32:39作者: ConfusedLamb
注意:字符串长度可自行定义;可以增加字符串长度判断,防止溢出。
// 方法一 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; }