strcpy和strncpy函数

这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去。

EX:

char str1[10]='',str2[]={"China"};
strcpy(str1,str2);

strncpy(str1,str2,2);作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符。

memcpy函数

c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

用法:void *memcpy(void *dest, const void *src, size_t n);

EX:

char *s1 = "csdn";
char *s2 = new char[10];
char *s3 = memcpy(s2,s1,5);

strcpy和memcpy的区别

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

memcpy的实现

要注意,内存重叠的情况,比如

char test[]="abcdefghi";

memcpy(test+3,test,6);

如果从头向尾复制,结果就是abcabcabc,如下图所示,而正确结果应该是abcabcdef。

所以像这种情况应该从尾向头复制

void memcpydiy(char *dest,const char *scr,int len)
{if (dest == NULL || scr == NULL)return;char *pdest = dest;char *pscr = (char *)scr;if ((scr < dest) && (dest < scr + len))  //重叠,从尾部开始复制{pdest = pdest + len - 1;pscr = pscr + len - 1;while (len--){*pdest-- = *pscr--;}}else{while (len--){*pdest++ = *pscr++;}}
}

C语言中的复制函数(strcpy和memcpy)相关推荐

  1. 怎样设置一个函数C语言,C语言中怎样编写一个函数 如何在C语言中定义一个函数?...

    如何在C语言中定义一个函数?小编很想在你面前流泪最后却还是选择装作打个哈欠 为什么小编怎么定义函数都不正确呢? 总是说小编 表达语法错误在main函数中 小编们可以在头文件与main函数之间定义,并编 ...

  2. c语言读取文件字节数,怎么在C语言中利用fstat函数获取文件的大小

    怎么在C语言中利用fstat函数获取文件的大小 发布时间:2021-01-22 17:03:17 来源:亿速云 阅读:110 作者:Leah 怎么在C语言中利用fstat函数获取文件的大小?针对这个问 ...

  3. 不调用C++/C字符串库函数,实现字符串复制函数strcpy

    已知strcpy的函数原型:char *strcpy(char *strDest,const char *strSrc),其中strDest是目的字符串,strSrc是源字符串.不调用C++/C的字符 ...

  4. 字符串复制函数strcpy的实现算法

    1,字符串复制,需要考虑三种情况: 目的字符串未被赋值,本身是个空串,源字符串存在. 目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字符扔 ...

  5. C语言中内联函数的作用 inline

    C语言中内联函数的作用 inline C语言中内联函数到底有什么作用? 试想一下,每当我们在假设就在主函数中调用另外一个函数的时候,那么这个函数就要入栈或者出栈,比如说下面的一个例子: 点击(此处)折 ...

  6. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪

    --by boluor 2009/5/20 如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求- 考 ...

  7. C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  8. c语言函数编写格式,在c语言中如何实现函数模板?

    如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求- 考虑了一阵子后,就想到了qsort上.qsor ...

  9. C语言中的回调函数(Callback Function)

    C语言中的回调函数(Callback Function) 1 定义和使用场合 回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中 ...

最新文章

  1. Oracle逻辑结构学习笔记
  2. UVA11137(立方数之和)
  3. Android安全加密:Https编程
  4. 英语磁带与计算机磁带区别,小学教材仍配发英语磁带遭吐槽:谁还用录音机
  5. 一月:你今年还回家过年吗?
  6. 设计模式20_观察者
  7. 【原创】实战padding oracle漏洞
  8. remapkey不能打开注册表_卸载 AutoCAD 清理注册表
  9. 微信答题小程序|在线答题系统
  10. PS增效工具Camera Raw 14
  11. 将vim打造成强大的python和c的ide
  12. [pwnable.kr]shellshock
  13. JavaScript 网页购物车项目
  14. 非凡十年,且看临工重机的“数智化”之变!
  15. Android开发技术前线 (android-tech-frontier) --优质技术文章的聚合项目
  16. 2023最新物联网毕业设计选题推荐100例
  17. 计算机一体机怎样连接无线网络连接不上,笔记本电脑无线打印机连接不上怎么办...
  18. win7系统如何关闭安全模式,关闭安全模式的方法
  19. 基于python的医学图像以辅助医疗系统
  20. Matlab基本初等函数大全

热门文章

  1. echarts之 数据可视化简单页面模板
  2. lab值意义_色差仪lab值含义是什么?
  3. SQL中的in、not in语句遇到null时的坑点
  4. 【机器翻译】机器翻译入门
  5. Matlab bsxfun函数
  6. java 为什么双亲委派_双亲委派机制及使用原因是什么?
  7. 有源雷达与无源雷达、主动雷达与被动雷达
  8. Xunit.net 单元测试学习——按顺序测试
  9. Java高并发和多线程的面试笔试题——稳拿offer
  10. Java----映射 map