strcpy_s与strcpy的比較

strcpy_s与strcpy的比較

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

 

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

样例:

#include<iostream>
#include<cstring>
using namespace std;

void Test(void)
{
char *str1=NULL;
str1=new char[20];
char str[7];
strcpy_s(str1,20,”hello world”);//三个參数
strcpy_s(str,”hello”);//两个參数但假设:char *str=new char[7];会出错:提示不支持两个參数
cout<<“strlen(str1):”<<strlen(str1)<<endl<<“strlen(str):”<<strlen(str)<<endl;
printf(str1);
printf(“\n”);
cout<<str<<endl;
}

int main()
{
Test();
return 0;
}
#include<iostream>
#include<string.h>
using namespace std;

void Test(void)
{
char *str1=NULL;
str1=new char[20];
char str[7];
strcpy_s(str1,20,”hello world”);//三个參数
strcpy_s(str,”hello”);//两个參数但假设:char *str=new char[7];会出错:提示不支持两个參数
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://javaforall.net/117950.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • angular指令笔记(一):ng-options

    angular指令笔记(一):ng-options

    2022年3月7日
    28
  • Eclipse+ADT+Android SDK 搭建安卓开发环境「建议收藏」

    Eclipse+ADT+Android SDK 搭建安卓开发环境「建议收藏」Eclipse+ADT+AndroidSDK搭建安卓开发环境要求必备知识windows7基本操作。运行环境windows7(64位); eclipse-jee-luna-

    2022年7月3日
    34
  • mysql 远程连接2003「建议收藏」

    远程环境:阿里云linux,以下可依次进行。知道可以远程连接把大象关进冰箱一共分四步打开ssh一、修改配置1、打开mysql配置文件:vimetc/my.cnf2、找到mysqld下面的bind-address如果你的bind-address=localhost,那么请讲它改为0.0.0.0代表允许任何ip访问二、打开端口1、打开端口命令:iptables-…

    2022年4月17日
    34
  • 使用R中merge()函数合并数据[通俗易懂]

    使用R中merge()函数合并数据[通俗易懂]使用R中merge()函数合并数据在R中可以使用merge()函数去合并数据框,其强大之处在于在两个不同的数据框中标识共同的列或行。如何使用merge()获取数据集中交叉部分merge()最简单的形式为获取两个不同数据框中交叉部分。举例,获取cold.states和large.states完全匹配的数据。代码如下:&gt;merge(cold.states,large….

    2022年6月14日
    47
  • 朋友圈集赞图片生成器_朋友圈集赞神器

    朋友圈集赞图片生成器_朋友圈集赞神器大家好这是一款朋友圈积攒截图小程序里面内涵三款样式生成,一款图文,一款分享,一款查看的样式也就是我们威信朋友圈所用到的样式就包含了那些可以用户自由的添加哈!赞的数量那些可以用户自定义的哈另外所需的内容也是用户自定义的安装方法的话和往常一样!直接威信开发者工具打开源码然后设置一个合法域名上传审核就可以了合法域名在压缩包里面,搭建解压了就可以看到了下面让我们来看看小编的测试演示图:小程序源码下载地址:(已更新)朋友圈集赞万能截图生成器威信小程序源码下载-小程序文.

    2022年9月5日
    2
  • Oracle Insert BLOB

    Oracle Insert BLOB来源于:http://arjudba.blogspot.com/2008/06/how-to-insert-blob-dataimage-video-into.htmlHowtoInsertBlobdata(image,video)intooracleBLOBsizeInthispostitisshownhowIcaninsertBlob

    2022年7月17日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号