删除字符的程序实.PPTVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
删除字符的程序实

删除字符的程序实现 简单介绍 删除字符,在计算机上应用很普遍,比如在处理文本文档的时候就时常会用到删除操作, 比如“剪切”操作,可以当做是删除同时复制。 那么删除操作是怎么实现的呢? 对于删除字符: 首先,我们要找到那个需要被删除的字符(或字符串,以下称为字符); 然后,我们可以把文本中的那个字符替换为空; 如果仅仅替换为空,就像切除某种不必要的东西;所以,我们要做的是让“伤口”愈合,把后面的字符向前移动以填补空位,就像医学上的“植皮”; 简化以上步骤,可以变成: 找到字符,然后直接将字符替换为之后的字符。 用图像来说明: 查找字符串的代码: char* Search(char str[ ], char dstr[ ]) /*返回找到的第一个字符串的位置(指针)*/ { int n; /*n用于记录字符的长度*/ n=strlen(dstr); for (int k=0;str[k;k++]) for (int i=k,int j=0; str[i]dstr[j]str[i]==dstr[j]; i++,j++) { if (j==n) return str[i+1-n]; } return NULL; } 替换字符的函数 void change(char*p, int n) { while (*(p+n)) { *p++ = *(p+n)++; *p=‘\0’; } } 从上面可看出删除字符的函数可以这样写: void delete_str(char str[], char c) { int i, j; for (i = j = 0; str[i]! = \0; i++) if (str[i]! = c) str[j++] = str[i]; str[j] = \0; } 流程图 完整代码(删除字符串) #include stdio.h #include string.h main() { int i, j, k, n2; char string[100], s[20]; printf(输入字符串:\n); gets(string); printf(输入要删除的子串:\n); gets(s); 完整代码(删除字符串) k = 0; n2 = strlen(s); for (i = 0;string[i]; i++) //删除字符串 { for (k = 0, j = i; s[k] string[j] s[k] == string[j]; k++,j++); //当出现字符串与要删除的字符串相同时进入循环 if (k == n2) //当完全相同的时候进入以下循环 完整代码(删除字符串) { for (k = i; string[j]; ) //若字符串结束则,结束循环 string[k++] = string[j++]; //将第i个字符替换为第i+n2的 字符,即被删除的字符后的 字符 string[k] = \0; //将下一个字符替换为空,以防止意外 i = 0; //又从头开始循环,直到没有该字符串 } else i = j; //如果不是完全相同,则继续计数 } 完整代码(删除字符串) puts(string); getchar(); } 运行结果 提到删除,我们很容易想到链表。对于链表结点的删除,链表只需改变成员指针的指向。操作比数组方便的多,但是为什么不用链表呢? 对于数组的弊端: 对于数组,每出现一次被删除字符,就意味着,在它以后的所有数字都会被一次移动一次。而且,当所有将被删除的字符都位于字符串末尾时,移动次数最少。全都位于前端时次数最多。 如果假设总字符数为m,被删字符数为n,次数为t。 容易算出:

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档