首页 > 作文

C语言实现字符串替换的示例代码

更新时间:2023-04-04 11:16:29 阅读: 评论:0

替换,意思就是用另一个字符串str3来替换str1中所有的str2。替换过程和查找的过程可以合并在一起,在上面循环查找的过程中,每找到一个str2,就把它替换为str3,替换后移动指针p。替换的情况分好几种:一种是str2和str3的长度相同,一种是str3比str2长,一种是str3比str2短。第一种情况比较简单,直接使用私立strncpy函数就可以,后面两种情况,都需要把str1中的元素进行移动。比如,在上面的例子中,str2=“the”,假设str3 =“this”,str3比str2长,为了有足够的空间,每找到一个the,从the后面的字符开始到结尾的‘\0’都要往后移动1个字节,也就是给this腾出4个字节的地方来(the的3个字节加移出来的1个字节)。假设str3 =“ok”,str3比str2短,为了填补空缺,每找到一个the,从the后面的字符开始到结尾的‘\0’都要往前移动1个字节,也就是给ok留出两个字节的地方就够了。移动过后,使用strncpy函数把str3拷贝到str2所在的地方。下面的程序中,str_replace就是用来实现替换功能的。

关键点:

注意字符数组与字符串的区别;在字符数组最后一个字符后面加上’\0’就构成了一个字符串。

/*-------------------------------------------------功能:实现字符串的替换描述:第一行输入原字符串,第二行输入要替换字符串,第三行输入新的字符串输入示例:there is an orange, do you want to eat it?orangeapple输出示例:there is an apple, do you want to eat it?author: zhang kaizhoudate: 2019-8-9 11:11:32--------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxsize 300void str_replace(char * str1, char * str2, char * str3);int main(){  char str1[maxsize];  char str2[maxsize];  char str3[maxsize];  gets(str1);  gets(str2);  gets(str3);  str_replace(str1, str2, str3);  puts(str1);  return 0;}void str_replace(char * str1, char * str2, char * str3){  int i, j, k, done, count = 0, gap = 0;  char temp[maxsize];  for(i = 0; i < strlen(str1); i += gap){    if(str1[i] == str2[0]){      done = 0;      for(j = 孟姜女哭长城的故事缩写i, k = 0; k < strlen(str2); j++, k++){        if(str1[j] != str2[k]){          done = 1;          gap = k;          break;        }      }      if(done == 0){ // 已找到待替换字符串并替换        for(j = i + strlen(str2), k = 0; j < strlen(str1); j++, k++){ // 保存原字符串中剩余的字符          temp[k] = str1[j];        }        temp[k] = '
/*-------------------------------------------------功能:实现字符串的替换描述:第一行输入原字符串,第二行输入要替换字符串,第三行输入新的字符串输入示例:there is an orange, do you want to eat it?orangeapple输出示例:there is an apple, do you want to eat it?author: zhang kaizhoudate: 2019-8-9 11:11:32--------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxsize 300void str_replace(char * str1, char * str2, char * str3);int main(){  char str1[maxsize];  char str2[maxsize];  char str3[maxsize];  gets(str1);  gets(str2);  gets(str3);  str_replace(str1, str2, str3);  puts(str1);  return 0;}void str_replace(char * str1, char * str2, char * str3){  int i, j, k, done, count = 0, gap = 0;  char temp[maxsize];  for(i = 0; i < strlen(str1); i += gap){    if(str1[i] == str2[0]){      done = 0;      for(j = i, k = 0; k < strlen(str2); j++, k++){        if(str1[j] != str2[k]){          done = 1;          gap = k;          break;        }      }      if(done == 0){ // 已找到待替换字符串并替换        for(j = i + strlen(str2), k = 0; j < strlen(str1); j++, k++){ // 保存原字符串中剩余的字符          temp[k] = str1[j];        }        temp[k] = '\0'; // 将字符数组变成字符串        for(j = i, k = 0; k < strlen(str3); j++, k++){ // 字符串替换          str1[j] = str3[k];          count++;        }        for(k = 0; k < strlen(temp); j++, k++){ // 剩余字符串回接          str1[j] = temp[k];        }        str1[j] = '\0'; // 将字符数组变成字符串        gap = strlen(str2);      }    }el{      gap = 1;    }  }  if(count == 0){    printf("can't find the replaced string!\n");  }  return;}
'; // 将字符数组变成字符串 for(j = i, k = 0; k < strlen(str3); j++, k++){ // 字符串替换 str1[j] = str3[k]; count++; } for(k = 0; k < strlen(temp); j++, k++){ // 剩余字符串回接 str1[j] = temp[k]; } str1[j]台风的影响 = '
/*-------------------------------------------------功能:实现字符串的替换描述:第一行输入原字符串,第二行输入要替换字符串,第三行输入新的字符串输入示例:there is an orange, do you want to eat it?orangeapple输出示例:there is an apple, do you want to eat it?author: zhang kaizhoudate: 2019-8-9 11:11:32--------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxsize 300市场营销工作void str_replace(char * str1, char * str2, char * str3);int main(){  char str1[maxsize];  char str2[maxsize];  char str3[maxsize];  gets(str1);  gets(str2);  gets(str3);  str_replace(str1, str2, str3);  puts(str1);  return 0;}void str_replace(char * str1, char * str2, char * str3){  int i, j, k, done, count = 0, gap = 0;  char temp[maxsize];  for(i = 0; i < strlen(str1); i += gap){    if(str1[i] == str2[0]){      done = 0;      for(j = i, k = 0; k < strlen(str2); j++, k++){        if(str1[j] != str2[k]){          done = 1;          gap = k;          break;        }      }      if(done == 0){ // 已找到待替换字符串并替换        for(j = i + strlen(str2), k = 0; j < strlen(str1); j++, k++){ // 保存原字符串中剩余的字符          temp[k] = str1[j];        }        temp[k] = '\0'; // 将字符数组变成字符串        for(j = i, k = 0; k < strlen(str3); j++, k++){ // 字符串替换          str1[j] = str3[k];          count++;        }        for(k = 0; k < strlen(temp); j++, k++){ // 剩余字符串回接          str1[j] = temp[k];        }        str1[j] = '\0'; // 将字符数组变成字符串      三角形余弦定理  gap = strlen(str2);      }    }el{      gap = 1;    }  }  if(count == 0){    printf("can't find the replaced string!\n");  }  return;}
'; // 将字符数组变成字符串 gap = strlen(str2); } }el{ gap = 1; } } if(count == 0){ printf("can't find the replaced string!\n"); } return;}

到此这篇关于c语言实现字符串替换的示例代码的文章就介绍到这了,更多相关c语言 字符串替换内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 11:16:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/aa0ccfe6de86293eac36299c1597fa62.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C语言实现字符串替换的示例代码.doc

本文 PDF 下载地址:C语言实现字符串替换的示例代码.pdf

标签:字符串   字符   数组   示例
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图