题目描述:

实现在字符串的内部增加字符串。void insert(char * s1,char * s2, int n);
将s2指向的字符串的拷贝,添加到s1第n个字符的位置,原位置的字符后移。n=0时,s2增加到s1的首部;
n=s1的字符串长度时,s2增加到s1的末尾。注意:使用空格字符来表示字符串的结束。
例如source指向位置,依次保存了字符'a',字符'b',字符空格' ',字符'c',则source指向的字符串为"ab"。保存为functions.cpp。
遇到异常情况,输出"error";否则不要随意输出,会视为错误。

参考代码:

#include <stdio.h>
#include <string.h>
void insert(char * s1,char * s2,int n)
{int i,len1,len2,j;char s3[100]={0};if(n<0||s1==NULL||s2==NULL){printf("error");return;}for(len1=0;s1[len1]!=' '&&s1[len1]!='\0';len1++);for(len2=0;s2[len2]!=' '&&s2[len2]!='\0';len2++);if(n>len1){printf("error");return;}for(i=n,j=0;i<len1;*(s3+j++)=*(s1+i++));for(i=n,j=0;j<len2;*(s1+i++)=*(s2+j++));for(i=n+len2,j=0;i<len1+len2;*(s1+i++)=*(s3+j++));*(s1+len1+len2)=' ';return;
}

讲解:

        题目实现起来不难,主要是错误情况容易漏掉,特别是n>len1时,我开始做时并没有想到这种情况,导致在这道题目上浪费了一定时间。

在测算字符串长度部分,可能有人会想到可以用strlen()函数,但是题目有告诉有可能会有类似“ab 1”这种字符串,而空格就表示了字符串的结束,所以此字符串的长度为2,但strlen()函数停止条件是碰到'\0',所以strlen()算出来的此字符串长度为4。

另外感觉这道题目有点类似string.h库中的strcat(),strcpy()等函数,感兴趣的可以去了解一下。

求实求真,大气大为。

#35 insert相关推荐

  1. ❤️手撕这十道HiveSQL题还不能吊打面试官,却能保你不被吊打❤️【推荐收藏】

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HiveSQL十题 第一题 1.需求 2.数据准备 3. ...

  2. mysql 控制函数库_数据库开发——MySQL——函数与流程控制

    一.函数 1.介绍 1.1.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定 ...

  3. Hive的JDBC连接和数据查询功能

    实验材料及说明 在Ubuntu系统的/学号(每个人之间的学号)/salesInfo目录下,有买家的购买记录文件Sales,该文件记录了买家的id,购买商品的id以及购买日期,文件为名为Sales.Sa ...

  4. SQL触发器实例(上)

    1 --1.) 创建测试用的表(testTable) 2 if exists (select * from sysobjects where name='testTable') 3 drop tabl ...

  5. C/C++连接MySql数据库

    本文对如何使用MySql的API连接MySql数据库,开发环境为VS2008. 一.VS2008工程设置工作 首先,建立一个windows应用程序的工程,将C/C++->预处理器->预处理 ...

  6. mysql七:视图、触发器、事务、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  7. 7.5. Function

    7.5.1. generate_series 生成序列数 test=# select generate_series(1,10) as id;id ----12345678910 (10 rows) ...

  8. 核心类生成-Mybatis Generator的使用

    总结一下Generator的使用,首先要设计好数据表,然后修改generator.xml中的配制,接着直接运行命令就可以了. 第一步:数据库设计: 生成数据表代码: 1 /* 2 Navicat My ...

  9. 视图、触发器、事务、存储过程、函数

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...

  10. 数据库 - mysql内置功能

    mysql内置功能: 1.视图 2.触发器 3.存储过程 4.事务 5.函数 一.视图 介绍: 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需 ...

最新文章

  1. QT的QMultiHash类的使用
  2. php 跳转qq群代码_邪少xml论坛qqxml代码—QQ音乐可播放框架QQ群任意跳转个人网站链接引流...
  3. 手写springboot_Spring Boot 入门教程 | 图文讲解
  4. 国外一教授坦言,用这方法能迅速成为python程序员,但都不愿意说
  5. C#中,控制台模式可以使用定时器吗?
  6. 应用程序框架实战二十六:查询对象
  7. mysql索引详解(转)
  8. 如何在Mongoose中更新/更新文档?
  9. CentOS更换阿里yum源
  10. GEE植被覆盖度计算
  11. PHP架构师必备技术视频合集
  12. ORA-20011(外部表收集统计信息异常报错)
  13. python计算日期是一年中的第几天,Python根据年月日,计算是一年的第几天
  14. Android Studio Offline work mode
  15. 微商怎么引流?不懂这些就引不来流量!
  16. JAVA编码(37)—— Java字符串转换为MAP对象
  17. H5视频播放器--西瓜视频播放器
  18. cp: omitting directory xxx
  19. mapx讲义 (来自skyma)
  20. C++的atof()

热门文章

  1. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  2. 英语阅读——The confusing pursuit of beauty
  3. matlab wmaxlev函数,CT-PET小波图像融合在精确放射治疗应用研究
  4. 夜的钢琴曲五—吉他指弹
  5. 2021SC@SDUSC 使用CUDA/GPU技术加速密码运算 总结
  6. 【故障分析】基于主成分分析实现三容水箱故障诊断附matlab代码
  7. echarts 世界地图 国家 中英文数据 nameMap
  8. 记一次很坑很坑的报错java.lang.Exception: The class is not public.
  9. 投影仪分辨率以及对应的投影幕布比例
  10. 软件测试工程师的自我认识和定位!!