1.已知strcpy 函数的原型是:
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy
答案:
c代码

char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) !='/0')
;
return tempptr ;
}

注意要点,

(1)传过来的源指针strSrc所指的字符串内容在该函数内是不能够修改的,因此应该声明为const类型。

(2)判断源指针或目的指针为空的情况,思维严谨,要考虑异常处理。

(3)要考虑传过来的源和目的指针指向同一个内存区的情况,如果指向同一内存区则源指针=目的指针,直接返回其中一个即可。

(4)函数原型要注意返回值为目的串的首地址,要考虑拷贝函数的返回值做其他函数的参数

C++代码,因此在函数内要保存目的指针的首地址。

(5)在拷贝字符串时,有两种方式要么先判断字符是否为空,再拷贝,这时候再循环外要给目的串加上'/0'字符;要么先拷贝再判断字符为空。

上面代码是后一种形式。

前一种形式为

while(*strDest!='/0')

{

*strDest++=*strSrc++;

}

*strDest='/0';

c++代码:

char * strcpy(char * strDest,const char * strSrc)
        {
                if ((strDest==NULL)||(strSrc==NULL))
                        throw "Invalid argument(s)";

//注意不能写成 throw new String("invalid argument(s)"),因为在函数中将动态申请的内存,

//并将地址返回是一个不好的编程习惯,使用者容易在使用完函数后,不管内存的释放。

if ( strDest == strSrc)
                    return strDest ;

char * strDestCopy=strDest;  
                while ((*strDest++=*strSrc++)!='/0');
                return strDestCopy;
        }

从代码中看出在C++代码中多了一个异常的处理,用throw抛掷异常。

C++之 字符串拷贝函数(面试题目)相关推荐

  1. 字符串拷贝函数memcpy()、strncpy()和snprintf()性能之比较

    问题: 函数memcpy(dest, src, sizeof(dest)).strncpy(dest, src, sizeof(dest))和snprintf(dest, sizeof(dest), ...

  2. 【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )

    文章目录 一.函数形参使用推荐方法 二.完整代码示例 一.函数形参使用推荐方法 在函数中 , 形参 中的 指针变量 , 不建议直接使用 ; 推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中 ...

  3. 字符串拷贝函数:strcpy的详解及模拟实现

    字符串拷贝函数:strcpy的详解及模拟实现!!! 对于字符串拷贝函数,之前在学习字符串时候,就已经学习过,但那只是片面的学习了一下,并没有经过系统的分析!只是大概的学习了一下!在关键的地方有时候还不 ...

  4. 【C语言】字符串拷贝函数(strcpy)与内存拷贝函数的不同及内存拷贝函数(memcpy)的模拟实现

    目录 字符串拷贝函数(strcpy) 函数原型 应用实例 我们将一个存放"abcdefg"的字符数组arr的内容拷贝到字符数组brr之中. 缺点 内存拷贝函数(memcpy) 函数 ...

  5. 字符串拷贝函数strdup()

    char *strdup(const char *s); 注: strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现. 字符串拷贝函数strdup()内部实现如下: ...

  6. 字符串拷贝函数Strcpy的实现

    实现字符串拷贝函数时,一定要分清楚源头的字符串和目的字符串,两者的位置不同,首先是方法1: #include<stdio.h> #include<assert.h> void ...

  7. 如何字符串拷贝函数的几种方法,你猜哪个效率最高?

    strcpy,即string copy(字符串复制)的缩写. 是C语言标准库中实现字符串拷贝的一个函数. 各大公司笔试题最喜欢考的一道题,快来看看,你会几种方法? 问:你会如何实现这个函数呢? 1 v ...

  8. c语言 字符串拷贝函数作用,C语言不使用strcpy函数如何实现字符串复制功能

    Ⅰ )字符串复制函数 字符串复制是字符串操作中比较常用的操作之一.C语言库函数中提供的字符串复制函数是:strcpy函数.该函数的功能为:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志&q ...

  9. 面试题--字符串拷贝函数

    题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数. 2.解释为什么要 ...

最新文章

  1. 领域驱动设计,为何死灰复燃?
  2. this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed
  3. SDUT-SQL题解
  4. 这6个高效的Java库,你知道吗?
  5. 《最终幻想7 重制版》DEMO体验:讨论ATB战斗系统的一些问题
  6. 关于慢开始、拥塞控制、快重传、快恢复算法的理解
  7. 如何配置cmd操作XAMPP中的MYSQL的运行环境?
  8. 中国工业机器人市场正在迎来爆发式增长
  9. 使用ffmpeg简单合并视频(2个以上)
  10. 论文查重 降重复度?
  11. 数据可视化--基于excel表格数据生成柱状图
  12. python输出矩阵_python输出矩阵
  13. VS2019的C++项目如何查看源文件(.h,.cc.cpp等)所在的工程
  14. VBA控制Excel行列转换
  15. 使用MayaLiveLink插件在UE4中预览Maya模型动作
  16. android加法计算器代码,Android实现简单加法计算器
  17. 阿里巴巴蚂蚁金服面经(已拿Offer)附答案!突如其来的的惊喜
  18. 海归学子创新创业座谈会:龙凡教授向浙江省委书记车俊汇报 Conflux 研发进展...
  19. python笔记(五)
  20. FusionCharts 参数设置

热门文章

  1. Soft NMS论文笔记
  2. 渗透测试入门17之一次完整的渗透测试流程
  3. python高阶函数map_简单了解python高阶函数map/reduce
  4. 概率图模型更进一步的知识点
  5. Selenium常用API的使用java语言之6-WebDriver常用方法
  6. POJ 3422 Kaka's Matrix Travels
  7. 滑动窗口解决最小子串问题 leetcode3. Longest Substring Without Repeating Characters
  8. webpack对脚本和样式的处理
  9. URAL 1876 Centipede's Morning (机智)
  10. C#解析单层html的中的文本,然后拼接起来