面试时遇到些strcpy()函数,本来挺简单的,但是面试官的一番描述让我有些不知道怎么下手

我当时觉得考虑内存重叠问题就可以了,但是他说的不是我理解的那样,然后就一直卡在那了,不过面试官很有耐心,我自己都开始嫌弃自己的理解能力了。不过面试官还是耐心的给我解释具体的情况。。唉,很可惜,还是自己学得不够,要深刻反思。

接下来实现考虑内存重叠的strcpy的函数

注意事项:

1. 判断输入参数的合法性。

2. 要有返回的参数

3. 别忘了复制字符串末尾的'\0'

4. 如果内存有重叠,则倒着复制

char* mystrcpy(char* dst, const char* src)
{assert(dst != NULL);assert(src != NULL);if (dst == src)return dst;int size = strlen(src) + 1;if (dst < src || src + size <= dst){char* d = dst;const char* s = src;while (size--)*d++ = *s++;}else{char* d = dst + size - 1;const char* s = src + size - 1;while (size--)*d-- = *s--;}return dst;
}

面试题:strcpy考虑内存重叠相关推荐

  1. 笔试题strcpy写法

    [精华] 出现频率最高的笔试题strcpy写法 http://www.chinaunix.net 作者:HopeCao  发表于:2008-10-30 15:49:14 [发表评论] [查看原文] [ ...

  2. 函数 —— strncpy() (内存重叠) memcpy() memmove() 一个字符串拷贝给另一个字符串

    char *strncpy(char *dest, const char *src, size_t n) *strncpy(char *dest, const char *src, size_t n) ...

  3. 对内存重叠的深入认识

    内存重叠:拷贝的目的地址在源地址范围内.所谓内存重叠就是拷贝的目的地址和源地址有重叠. 在函数strcpy和函数memcpy都没有对内存重叠做处理的,使用这两个函数的时候只有程序员自己保证源地址和目标 ...

  4. 从memcpy到memmove,内存函数拷贝与内存重叠问题(重点内容)

    有一个关于拷贝的问题,假如有这样一个字符串 char a[]="hello"; 我需要把这个字符串拷进另一个变量中 char a1[10]; 好像方法蛮多的,比如strcpy #d ...

  5. memcpy内存重叠的解决

    内存重叠:拷贝的目的地址在源地址范围内.所谓内存重叠就是拷贝的目的地址和源地址有重叠. 在函数strcpy和函数memcpy都没有对内存重叠做处理的,使用这两个函数的时候只有程序员自己保证源地址和目标 ...

  6. memcpy内存重叠问题

    memcpy内存重叠 之前一直没有注意到内存复制函数的内存重叠问题.今天偶遇遂琢磨了一下,记之. 函数简介:c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始 ...

  7. memcpy和memmove的区别以及内存重叠问题

    memcpy和memmove的区别以及内存重叠问题 转自:https://www.codecomeon.com/posts/89/ 区别 memcpy() 和 memmove() 都是C语言中的库函数 ...

  8. C++面试题-指针-动态内存指针

    C++面试题-指针-动态内存指针 问:什么是内存泄漏和内存溢出? 答:内存泄漏:在程序申请内存后,该内存不再会被引用,但是不能释放该内存空间.如果你delete指针之后,该空间不能归还,自己又不能进行 ...

  9. 腾讯面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。

    腾讯最新面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号. 以下是个人所建第Algorithms_12群内朋友的聊天记录: 首先你要注 ...

最新文章

  1. MultiObjective using Evolutionary Algorithms (2) -- Multi-Objective Optimization
  2. 如何利用云原生技术构建现代化应用?
  3. 计算机文档vmware安装虚拟机,教你如何用VMware虚拟机安装系统.docx
  4. leadshop开源商城系统
  5. 关于锁表查询的部分SQL
  6. 用Unity简单实现第三人称人物的移动和转向
  7. 20.TCP/IP 详解卷1 --- TCP 的成块数据流
  8. 图神经网络初探:build a simple graph nets
  9. 数字电路与逻辑设计计算机专业,数字电路与逻辑设计试卷(A)(04级计算机、网络工程、软件工程专业).doc...
  10. json转Map泛型Map<String,T>,json转集合Map泛型List<Map<String,T>>工具类
  11. ORACLE新增字段、注释等
  12. Golang Tools
  13. html中尖括号写法,HTML中如何显示特殊字符(尖括号 “”,)?
  14. AspNet Core 2.2 SendGrid邮件发送(可群发)
  15. OSINT + Python #x3D; 自定义黑客
  16. 如何设置ul中li的行距
  17. broker-list与bootstrap-server辨析
  18. C语言数组大小极限,C中允许的最大静态数组大小是多少?
  19. 如何建设自己的网站 博客
  20. 50个极好的bootstrap前端框架

热门文章

  1. 全国计算机一级考试试题大题,全国计算机等级考试一级考试练习(新大纲)试题及答案...
  2. 考研最卷的专业,我提名新传
  3. 小游戏的processing实现
  4. 【Ambari】Build and install Ambari 2.7.5
  5. 实现轮播图,仅需3步
  6. Mac OS X在终端中打开文件夹窗口
  7. Mac m1 安装php redis扩展
  8. 迁移学习在乳腺癌检测中的应用
  9. 【图像处理中的数学修炼(第1版)】总纲:详解图像背后的数学原理
  10. cad计算机在哪,Win7系统中cad临时文件保存在哪里