栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

#36 del

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

#36 del

题目描述:

实现在字符串的内部删除字符串的函数del。函数原型如下:
void del(char * s,int n,int len) ;
在s指向的字符串中,从s第n个字符的位置开始,删除len个字符,结果通过指针s返回。
n是从0开始,到s的长度-1为止。从0开始,len=s的字符串长度时,全部删除,原字符串为空字符串。
注意:使用空格字符来表示字符串的结束。
例如source指向位置,依次保存了字符'a',字符'b',字符空格' ',字符'c',则source指向的字符串为"ab"。
保存为functions.cpp。
遇到异常情况(s为null,n为负数等等),输出"error";
否则不要随意输出,会视为错误。
例如:s为以空格结尾的字符串apple 
调用del(s, 2, 2);之后,删除了数组下标以2开始的2个字符pl,结果为(以空格结尾)
ape

参考代码:

#include
void del(char * s,int n,int len)
{
	if(s==NULL||n<0||len<0)
	{
		printf("errorn");
		return ;
	}
	int i;
	for(i=0;i 

讲解:

        一道令人窒息的题目,一道百思不得其解的题目,一道提交n次、换了三种方法才过的题目!

        字符串删除不难实现,只是要注意以空格结尾。

        难就难在error情况。在自己调试时,含空格的字符串如果用scanf是没法实现的,所以若不仔细考虑,很难调试出这种情况。

        在这里我们可以在main函数中字符串s定义时直接定义成含空格的字符串,例:“char s[1001]={"Iama string"};”。这样的话其真实长度应为4,但如果用strlen()或者while(s[i]!='')来计算长度是会得到11的。

        这个错误情况本质就是 n+len>s的长度,但在这里,可以直接从第一个字符找到第n+len个字符,如果其中有空格,说明其真实长度小于n+len,可直接判断为error!

求实求真,大气大为。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号