VS2017下C++中strcpy()函数和strcpy_s()函数的使用及注意事项

一、问题描述

在VS2017下使用 strcpy() 函数时会出先报错,根据所给报错提示“Consider using strcpy_s instead.

二、解决方法

使用strcpy_s函数替代。先看看strcpy_s的定义:

 _Check_return_wat_
    _ACRTIMP errno_t __cdecl strcpy_s(
        _Out_writes_z_(_SizeInBytes) char*       _Destination,
        _In_                         rsize_t     _SizeInBytes,
        _In_z_                       char const* _Source
        );

可以通过右键点击strcpy_s函数,然后选到转到说定义进行定义查看。

通过定义可知strcpy_s()函数包含3个参数

  • 目标字符串指针
  • 字符串长度
  • 输入字符串指针

一般在获取字符串长度的过程中我们常用strlen()函数计算字符,不过要切记:在使用strlen()求出字符串长度时一定要+1

原因:strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s);

【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。

三、练习代码

Test()//无参数,析构函数
	{//完成对属性的初始化工作
		a = 10;
		p = (char *)malloc(100);
		strcpy_s(p, strlen("aaaabbbb") + 1, "aaaabbbb");//注意是strlen(temp)+1
		cout << "我是析构函数,被执行了" << endl;
	}

 

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值