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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse导入maven工程pom.xml文件不起作用[通俗易懂]

    eclipse导入maven工程pom.xml文件不起作用[通俗易懂]导入硬盘中的maven工程时要确保import的是maven选项下的ExistingMavenPojects。接着要替换maven仓库的地址为自己定义的地址window->preference->maven->usersettings

    2022年5月23日
    44
  • 同名的cookie会不会存在多个

    同名的cookie会不会存在多个

    2021年10月31日
    53
  • 安装oracle11g oci.exe,oracle 11g安装图解|安装oracle数据库软件详细教程[通俗易懂]

    安装oracle11g oci.exe,oracle 11g安装图解|安装oracle数据库软件详细教程[通俗易懂]oracle是非常强大的数据库软件,有很多朋友对oracle安装并不是很了解,因为除了安装还有一些变量需要设置,下面一起来看看oracle11g安装图解,定能帮助你快速安装oracle11g。Oracle11g安装图解:1、首先下载Oracle11gR2forWindows的版本本站下载地址:其中包括两个压缩包:win64_11gR2_database_1of2.zip,win64_…

    2022年9月21日
    2
  • 什么品种的猫最受欢迎?Python爬取猫咪网站交易数据[通俗易懂]

    什么品种的猫最受欢迎?Python爬取猫咪网站交易数据[通俗易懂]本篇文章是关于某化妆品企业的销售分析。从分析思路开始带大家一步步地用python进行分析,找出问题,并提出解决方案的整个流程。以下文章来源于修炼Python作者:叶庭云Python爬虫、数据分析、网站开发等案例教程视频免费在线观看https://space.bilibili.com/523606542一、前言看到可爱的猫咪表情包,总是会忍不住收藏,晒部分图如下:认识的一些朋友也养了猫,比如橘猫、英短、加菲猫之类的,看他们发朋友圈撸猫,老羡慕了,猫咪真的太可爱啦。发.

    2025年11月14日
    0
  • 淘宝店铺固定背景代码

    淘宝店铺固定背景代码全屏固定背景是指在淘宝店铺里下拉滚动条时背景依然位置不动 不会跟随滚动条滚动的全屏背景 效果在线展示 http www tbzxiu com zx xinwangpu 14 htm 如果要制作全屏固定背景 首先要开通新旺铺专业版 新旺铺专业版全屏固定背景制作教程第一步 制作背景素材网店装修网提供了一套绿色的背景素材 适合各种类型的淘宝店铺使用 点击下

    2025年12月3日
    6
  • Okio源码分析

    Okio源码分析【参考资料】拆轮子系列:拆Okio

    2022年4月30日
    36

发表回复

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

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