#include<string.h>
char *strncpy(char *dest, const char *src, unsigned long n);

功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置。而strncpy()的功能是将指针变量src所指向的字符串的前 n 个字符串复制到指针变量dest所指向的位置。只要将strcpy()掌握之后,strncpy就简单多了,关于strncpy()唯一需要注意的是如果他不是复制整个字符串,那么最后的结束标识符’\0’就不会被复制,这时候必须手动编程在后添加’\0’,否则输出时由于找不到结束符就会输出乱码,他会一直输出,直到遇到’\0’为止。

内存拷贝函数memcpy()

strcpy()只能复制字符串,但是memcpy()可以复制任何数据,因为他是内存拷贝函数,是直接操作内存空间。

#include<stdio.h>
void *memcpy(void *dest, const void *src, unsigned long n);

功能是从指针变量src所指向的内存空间中复制 n 个字节的数据到指针变量 dest 所指向的内存空间。

1 字符数组 dest 的长度一定要大于复制的字符字节数 n,否则会产生溢出,导致相邻内存空间的数据被覆盖,这样很危险。

2 入股复制的是完整的字符串,那么字符数组 dest 的长度和复制的字节数 n 一定要考虑最后的标识符’\0’;

3 如果不是完整复制一个字符串,而是仅仅复制前面几个 字符,那么最后的标志符“\0”,就不会被复制。这个时候在输出 dest的时候,因为找不到结束符“\0”,就不会一直往后输出,直到遇到’\0’为止。

#include<stdio.h>
#include<string.h>
int main(void)
{char src[20] = "i love you mom";char dest[20] = "\0";memcpy(dest, src, 19);printf("dest = %s\n", dest);return 0;
}

字符串复制函数strncpy()和内存拷贝函数memcpy()相关推荐

  1. c语言内存复制函数,【C语言】 字符串操作函数及内存拷贝函数归总

    今天在这里把零散的一些常用的字符串操作函数和内存拷贝函数进行一下归总实现. 一 . 字符串操作函数 字符串操作函数有很多,这里我列举一些常用的函数,以及自实现的代码: 字符串拷贝函数: 函数原型:ch ...

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

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

  3. 【内存拷贝函数:memcpy与memmove】

    文章目录 前言 一.memcpy函数(内存拷贝)的实验 二.memcpy函数的模拟实现 三.memmove函数(内存移动)的实验 四.memmove函数的模拟实现 总结 前言 c和c++使用的内存拷贝 ...

  4. 内存拷贝函数memcpy相关解析(C语言)

    memcpy方法解析 内存拷贝函数的一般用法 memcpy()函数的拷贝原理分析 以深浅拷贝为例分析memcpy的拷贝原理 用memcpy()函数与不用memcpy()函数进行拷贝数据的区分 内存拷贝 ...

  5. 手撕内存拷贝函数 memmove、memcpy

    做题家系列 -- 手撕内存拷贝函数 memmove.memcpy memcpy 函数原型 实现思路 手撕代码 面试注意要点 memmove 函数原型 实现思路 手撕代码 面试注意要点 总结 memcp ...

  6. 实现一个高效率的内存拷贝函数memcpy

    内存拷贝函数memcpy memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, cons ...

  7. 剖析SGI STL空间配置器(deallocate内存回收函数和reallocate内存扩充函数)

    剖析SGI STL空间配置器(deallocate内存回收函数和reallocate内存扩充函数) deallocate内存回收函数 deallocate函数的定义: static void deal ...

  8. 内存拷贝函数的深入思考

    本文是我们训练程序员的系列文章之一,仅供参考! 这几年在全国巡回招聘应届毕业生的过程中,经常会遇到这样的现象:有些同学对自己的笔试比较满意,可是最后却得不到面试的机会,心里大为不解,颇有"死 ...

  9. c语言 申请1k内存,怎么解决函数内申请内存,函数外释放的问题

    由于不同的编译器和库,其内部关于内存申请释放的实现不同,因此不能直接要求用户指定用某个函数释放内存,必须要单独自己封装一个释放的接口.有两种思路: 一是以指针作为参数得到数组地址,单独设计一个释放的函 ...

最新文章

  1. pre是什么意思css,Precss
  2. python基础代码事例-数据科学Python基础(附示例代码和练习题目)
  3. php中将数据加入到文件中
  4. Flask学习 一 基本结构
  5. 判空,空字符串,空对象,判null,判undefined等
  6. 多个C文件共用一些变量
  7. php mysql设计中验证码的实现_php如何实现验证码功能
  8. 微信小程序商品详情页面开发案例
  9. java实现单词默写助手,强烈建议new-hand收藏
  10. 电阻的组成、分类及读数方法
  11. Matlab 导入并显示png格式的透明图片
  12. 微信小程序的开发方式有哪些
  13. 第一行代码Android技巧1——知晓当前是在哪一个活动
  14. Ubuntu 桌面便签小工具-Indicator Stickynotes
  15. Vue 键盘事件(keyup、keydown)
  16. 浙江电信IPTV+上网 Padavan老毛子固件单线复用
  17. 网易邮箱恢复服务器上删除邮件吗,网易企业邮箱普通邮箱删除邮件找回
  18. Msc.Marc的python开发#1
  19. 域名被封的表现域名微信不能访问该怎样处理
  20. 【网络教程】群晖中如何安装甜糖,手把手教您Docker安装甜糖,如何解决甜糖安装使用中遇到的问题(已解决)

热门文章

  1. 博图V15与RobotStudio通讯仿真
  2. 百度地图InfoWindow事件绑定
  3. 自装kali进行管理员登陆
  4. 用Java为视频添加图片水印(类似直播)
  5. 学生选课抽签管理系统设计(二)
  6. 选择一个android的版本下载,选择下载-选择安卓版下载_公交游戏网
  7. 一篇文章讲清楚什么是数据网格和数据网格的原则
  8. Pro-Face触摸屏报警显示绑定和显示
  9. ucosii操作系统和linux,请高手介绍下uCOSII和Linux的差异?
  10. URP Shader FrameBuffer Fetch Mali Crash