博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试—每日一题(8)
阅读量:4943 次
发布时间:2019-06-11

本文共 1811 字,大约阅读时间需要 6 分钟。

  好长时间没有更新博客了,特别是这个专栏,一是因为自己比较忙,二是因为我还是比较懒的缘故。让各位见笑了。今天在更新一篇。

像什么strcpy、strcat等等字符串的操作和实现在面试中经常出现,不管是上机题还是笔试题。而今天在这里我将重点讲讲strcpy和memcpy的实现,而memset也会稍微提一下。

        至于这几个函数,在实际的开发中,肯定不会让你亲力亲为的去实现,直接调用就ok了,但是在面试中这是一个考验你的编程基本功的过程。这三个函数的基本功能如下:

  1. strcpy:顾名思义,字符串的复制功能,这只是简单的这么说说
  2. memcpy:从名字也可以看出来,这个是内存的复制,这就说明,它不仅仅可以复制字符串,还可以复制数组、结构体等等类型
  3. memset:这个函数比较简单,可以说就是一个初始化的,或者说清空一个结构类型的变量或者是数组

考题形式1:

请说说strcpy和memset的区别:
考题形式2:
请自己单独实现strcpy和memset的功能:
相对于这两种形式来说,形式2的考题价值很明显比形式1的大。

strcpy和memset的主要区别:

分一下三点来说;

一:复制内容不同:strcpy只能复制字符串,而memcpy可以复制任意内容。

二:复制方法不同:strcpy不需要指定长度,它遇到字符串结束符"\0"。

三:用途不同:通常在复制字符串时用strcpy,而需要复制其他类型用memset。

现在重点来讲讲实现吧。

一下是strcpy的原型,根据这个原型来实现:

char * strcpy(char *dest, const char *source)
实现代码如下:

#include <iostream> using namespace std; char * strcpy(char *, const char *); int main() { char a[100]; char b[] = "GuoDong Young"; //memset(a, 0, sizeof(a)); strcpy(a, b); cout<<a<<endl; cout<<b<<endl; return 0; } char * strcpy(char *dest, const char *source) { //判断目标和源是否为空 if (dest == NULL || source == NULL) { return NULL; } char *strDest = dest; //保存目标地址 while ((*dest++ = *source++) != '\0'); *dest = '\0'; //添加一个结束标志 return strDest; }

一下这个是memset的原型:

void * memcpy(void *to, const void *from, size_t size);

实现过程如下:

#include <iostream> using namespace std; void * memcpy(void *to, const void *from, size_t size); int main() { char a[100]; char b[] = "宁采臣"; memset(a, 0, sizeof(a)); memcpy(a, b, 6); cout<<a<<endl; cout<<b<<endl; return 0; } void * memcpy(void *to, const void *from, size_t size) { //判断是否为空 if (to == NULL || from == NULL) { return NULL; } char *tempTo = (char *)to; char *tempFrom = (char *)from; while (size-- > 0) { *tempTo++ = *tempFrom++; } return to; }
现在基本写完了,你也不妨试一试。写写。好了,就到这里了,如果有问题,可以加QQ群:107133067

其它博文,希望大家提出意见:

转载于:https://www.cnblogs.com/JPAORM/archive/2011/08/14/2509882.html

你可能感兴趣的文章
网络虚拟化我眼中的OpenFlow
查看>>
[leetcode] 3. Longest Substring Without Repeating Characters
查看>>
06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)
查看>>
获取判断IE版本 TypeError: Cannot read property 'msie' of undefined
查看>>
tcpreplay安装使用
查看>>
自增锁
查看>>
ps命令学习
查看>>
关于proteus仿真的串口问题
查看>>
[NOI2018] 归程 可持久化并查集
查看>>
无论怎样,拒绝了
查看>>
Discuz API的延伸
查看>>
C/C++(C++内存管理,内联函数,类型转换,命名空间,string类)
查看>>
【NOIP2015】斗地主
查看>>
uva 10537 Toll! Revisited(优先队列优化dijstra及变形)
查看>>
MySQL对时间的处理总结
查看>>
笔记四:python乱码深度剖析二
查看>>
《PHP程序员面试笔试宝典》——如何回答技术性的问题?
查看>>
【转载】Amit’s A star Page 中译文
查看>>
注册谷歌账号并验证时显示号码无法用于验证的问题
查看>>
Hive 变量和属性
查看>>