删除字符的程序实.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

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

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档