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;
	}
发布了27 篇原创文章 · 获赞 3 · 访问量 3342

猜你喜欢

转载自blog.csdn.net/weixin_40977054/article/details/102371683
今日推荐