strcpy_s和strcpy()函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。

这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。

三个参数时:

errno_t strcpy_s(char *strDestination,size_t numberOfElements,const char *strSource
);

两个参数时:

errno_t strcpy_s(char (&strDestination)[size],const char *strSource
); // C++ only

Example:

#include<iostream>
#include<cstring>
using namespace std;void test(){char *str1=NULL;str1=new char[32];char str[7];strcpy_s(str1,20,"Hello C++");    //三个参数strcpy_s(str,"Hello C++");        //两个参数,但如果:char *str=new char[7];会出错:提示不支持两个参数。这是由于你已经给str分配了空间,而没有说明其读写的空间大小。strcpy_s(str,_T("Hello C++"));     //同样会报:不支持两个参数cout<<"strlen(str1):"<<strlen(str1)<<endl<<"strlen(str):"<<strlen(str)<<endl;printf(str1);printf("\n");cout<<str<<endl;
}int main()
{Test();return 0;
}输出为:
strlen(str1): 11        //另外要注意:strlen(str1)是计算字符串的长度,不包括字符串末尾的“\0”!!!
strlen(str): 5
hello world
hello
}

转载于:https://blog.51cto.com/uppower/1682466

重温C++之“strcpy_s与strcpy的比较”相关推荐

  1. strcpy_s与strcpy的比較

    strcpy_s和strcpy()函数的功能差点儿是一样的.strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它仅仅能假定缓冲足够大来容纳要拷贝的字符串.在程序执行时,这将 ...

  2. strcpy_s与strcpy对照

    strcpy_s和strcpy()函数功能几乎相同.strcpy函数.就象gets函数一样,它没有方法来保证有效的缓冲区尺寸.所以它仅仅能假定缓冲足够大来容纳要拷贝的字符串.在程序执行时,这将导致不可 ...

  3. strcpy_s与strcpy

    例子: #include<iostream> #include<cstring> using namespace std;void Test(void) { char *str ...

  4. strcpy、wcscpy与_tcscpy关系 strcpy_s与strcpy比较

    C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如: char *strcpy(char *strDestination, const char *strSource); ...

  5. strcpy_s函数/strcpy函数简介

    strcpy /* *描述:此类函数是用于对字符串进行复制(拷贝). * *参数: * [in] strSource:需要拷贝的字符串 * [out] strDestination:拷贝完成之后的字符 ...

  6. C语言 strcpy 和 strcpy_s 函数区别 - C语言零基础入门教程

    目录 一.strcpy_s 函数/strcpy 函数简介 1.strcpy 函数语法 2.strcpy_s 函数语法 二.strcpy/strcpy_s 函数实战 三.猜你喜欢 零基础 C/C++ 学 ...

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

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

  8. C4996:'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.

    使用C语言中字符串的处理函数提示错误 *需包含头文件"string.h" #include "string.h" 以strcpy函数为例 原型:strcpy(s ...

  9. strcpy()、strncpy()和strcpy_s()函数的区别

    1.strcpy()函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #includ ...

最新文章

  1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
  2. 设计模式-创建型-单件
  3. AI芯片怎么降功耗?从ISSCC2017说起
  4. core webapi缩略图_netcore 图片缩略图
  5. 总结CSS3新特性(媒体查询篇)
  6. 遍历文件夹并移动其中所有的文件
  7. java --map遍历
  8. C# 入门(0807):流程控制
  9. waitpid使用实例
  10. 苹果激活锁功能可被长字符串溢出
  11. python编写一个简单的程序验证码_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...
  12. w ndows7安装软件免费下载,window7系统下载_window7旗舰版下载「win7」-太平洋下载中心...
  13. 计算机配置知识教学,电脑配置的基本知识
  14. macOS 升级12.6后 Electron 应用闪退
  15. Linux编译dd源码
  16. 旧照片或胶片着色修复+GAN
  17. 不小心删除微信聊天记录怎么恢复?不看看这几种方法怎么行
  18. PS 有哪些小技巧让你好用到哭?
  19. python安装 Autodesk FBX 包
  20. 多目标优化算法:多目标变色龙群优化算法MOCSA(提供MATLAB源码)

热门文章

  1. 深度学习优化算法实现(Momentum, Adam)
  2. hyperledger fabric_鼎诚鬼才|超级账本入门(四):HYPERLEDGER 权限管理
  3. import python settings from_Python的Django框架中settings文件的部署建议
  4. httpsurlconnection 写不进去authorization值_23. 假设检验的时候为什么常写p lt; 0.05,而不写具体的p值?...
  5. 5和6 objbc oracle_Oracle测试题
  6. 数据字典在sga的哪一个组件中缓存_非功能性约束之性能(1)-性能银弹:缓存...
  7. oracle dbms_crypto,DBMS_CRYPTO包对Oracle加密
  8. jQuery中事件及常用事件总结、jQuery中常见效果、隐式迭代、链式编程、样式操作、动画队列、不同元素绑定同一个事件
  9. 大数据技术之Hadoop3.1.2版本完全分布式部署搭建
  10. 机器学习笔记(十四)——HMM估计问题和前向后向算法