strcpy函数语法

/*
*描述:此类函数是用于对字符串进行复制(拷贝)。
*
*参数:
*   [in] strSource:需要拷贝的字符串
*   [out] strDestination:拷贝完成之后的字符串
*
*返回值:指向 strDestination 这个字符串的指针
*/
char* strcpy(char* strDestination, const char* strSource);

strcpy_s函数语法

/*
*描述:此类函数是用于对字符串进行复制(拷贝)。
*
*参数:
*   [out] strDestination:拷贝完成之后的字符串
*   [in] numberOfElements: strDestination目标缓冲区长度
*   [in] strSource:需要拷贝的字符串
*
*返回值:返回一个整数,0表示复制成功,返回非0值代表复制不成功,不同的值表示不同的错误,具体内容可以查阅MSDN手册
*/
errno_t strcpy_s(char *strDestination , size_t numberOfElements , const char *strSource);

strncpy 函数语法

/*
描述:
将指定长度的字符串复制到字符数组中,复制字符串source中的内容(字符,数字、汉字....)到字符串destinin中,复制多少由size_t n的值决定。
如果source的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<source的长度,
只是将source的前n个字符复制到destinin的前n个字符,不自动添加'\0',
也就是结果destinin不包括'\0',需要再手动添加一个'\0'。
如果source的长度小于n个字节,则以NULL填充destinin直到复制完n个字节。
source和destinin所指内存区域不可以重叠且destinin必须有足够的空间来容纳source的字符长度+'\0'。如果要复制的*source的部分有\0,就把\0复制进去,之后就提前结束,即使没复制到第size_t n个字符也是参数:
[out] destinin:表示复制的目标字符数组;
[in] source:表示复制的源字符数组;
[in] n:表示复制的字符串长度返回: destinin
*/
char *strncpy(char *destinin, char *source, size_t n);

strncpy_s  函数语法:

/*
描述:
将由src指向的字符数组的大部分计数字符(包括终止空字符,但不包括空字符后面的任何字符)
复制到由dest指向的字符数组。
参数:
dest 指向要复制到的字符数组的指针SRC  指向要复制的字符数组的指针count 最大数量的字符复制destsz 目标缓冲区的大小返回值:
在成功时返回零,错误时返回非零值*/errno_t strncpy_s(char * restrict dest,rsize_t destsz,
const char * restrict src,rsize_t count);

strcpy和strcpy_s 在拷贝的时候遇到"\0", 就自动结束了,后面加“_s”表示,安全模式

strncpy能够选择一段字符输出,strcpy则不能

memcpy 函数 / memcpy_s 函数拷贝过程中就算遇到'\0'结束符也不会结束;

strncpy 的标准用法为:(手工写上 \0)

strncpy(path, src, sizeof(path) - 1);
path[sizeof(path) - 1] = '\0';
len = strlen(path);

这几个strcpy的变形,在指定大小的时候,都要留一个位置给\0,所以拷贝的大小永远都是size-1

番外:

Linux 版本有 strlcpy,但 Windows 下是没有 strlcpy 的,对应的是strcpy_s函数 

strcpy、strcpy_s、strncpy、strncpy_s相关推荐

  1. strcpy、strcpy_s、strncpy、strncpy_s 字符串拷贝用法

    1.strcpy 原型声明: char *strcpy(char* dest, const char *src); 功能:将以src为首地址的字符串复制到以dst为首地址的字符串,包括'\0'结束符, ...

  2. strcpy()、strncpy()、strlcpy()、strncpy_s()函数

    strncpy()函数 原型:extern char *strncpy(char *dest, char *src, int n);     用法:#include <string.h>  ...

  3. C语言——数组、字符串处理函数、strlen、strcpy和strncpy、strcat和strncat、strcmp和strncmp

    目录 一.数组 1.定义:类型 数组名[元素个数] 2.数组不能动态定义 3.如何访问数组中的元素:数组名[下标] 4.循环与数组的关系 5.数组的初始化 二.C99标准中的数组 三.字符串处理函数 ...

  4. C语言之字符串探究(五):N系列字符串函数——strncpy、strncat、strncmp

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  5. C和指针之字符串之strncpy、strncat、strncmp

    1.strncpy.strncat.strncmp 1).函数原型char *strncpy(char *dest,char *src,size_t n); 复制字符串src中的内容(字符,数字.汉字 ...

  6. c运行库、c标准库、windows API的区别和联系

    c运行库.c标准库.windows API的区别和联系 C运行时库函数 C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的.    API函数 API函数是操作系统为方便用户设计应用 ...

  7. 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数

    https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...

  8. c运行库、c标准库、windows API都是什么玩意

    c运行库.c标准库.windows API都是什么玩意 2012-11-28 14:37 768人阅读 评论(2) 收藏 举报 C运行库和C标准库的关系 C标准库,顾名思义既然是标准,就是由标准组织制 ...

  9. 146_路由器项目_附加功能:可以拿取文件内IP保存到过滤链表中,过滤IP也可以保存到txt文件,也可以终端输入IP,保存到文件【单链表的尾插、头插、删除指定节点、遍历等】】

    动图: ip_file.h: #ifndef IP_FILE_H #define IP_FILE_H #include <stdio.h> #include <string.h> ...

最新文章

  1. Linux下SVN服务器同时支持Apache的http和https及svnserve独立服务器三种模式且使用相同的访问权限账号...
  2. Spring Boot+Docker微服务分布式服务架构设计和部署案例
  3. (1)Hadoop 的第一个程序 WordCount 理解
  4. 区块链项目-Lisk
  5. XCTF-Reverse:logmein
  6. 「ImageProcess」mp4视频转存图片内存变大的原因探究
  7. LDAP 中 CN, OU, DC 的含义
  8. SQL Server 2012安装图解
  9. 美团点评容器平台HULK的调度系统
  10. Java解决循环注入问题
  11. 赛锐信息:SAP订单统一管理系统
  12. 科研人员新电脑装机指南
  13. C语言自学笔记(10)
  14. Python基础知识- 列表
  15. 商务网站建设与维护【16】
  16. Math类常用方法大全
  17. 为了写好代码,你坚持了哪些好习惯?
  18. Android 各版本对应的SDK版本
  19. IText生成PDF
  20. eap-peap/mschapv2

热门文章

  1. 关于蓝桥杯第十二届H题杨辉三角(满分结果)
  2. python unpacking_Python解包(Unpacking)
  3. Xms、Xmx、MaxMetaspaceSize含义
  4. 如何设计一个API快速开发平台?
  5. Java等额本息实现
  6. 11.4 使用Markdown和Flask-PageDown:没有文本编辑框的问题
  7. 图像技术_基础技术(0001)_RGB与CMYK的定义和详细区别
  8. 深入理解数据库当中的聚合函数
  9. 第一遍Java学习笔记
  10. linux上namd使用教程,NAMD入门教程(三)[共28页].pdf