为了账号安全,请及时绑定邮箱和手机立即绑定

C++中字符串拷贝

C++中字符串拷贝

C++ C
慕哥8183350 2018-04-24 18:00:52
第16行,用VS2015一直报错 根据老师所给,代码是一样的。 错误说是这个,求大神解答
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

这样的话,我就能够确定问题所在了。 基本上你猜得也没错,就是 IDE 的锅。


具体原因是这样的:

strcpy 这函数有安全隐患。因为它无法对拷贝字符的个数进行检查,所以第一个参数必须足够大,否则会发生“溢出”,导致个各种问题。  我看到你用了一个足够大的数组(char[100])做第一个参数,我想你是明白这一点的。

那么 VC++ 这个 IDE 就认为这样的函数不安全,所以自作主张地增加了一个“安全版”的 strcpy_s 函数(它会对拷贝个数作限制)。不仅如此 VC++ 还默认把使用 strcpy 当作错误,这导致了你遇到的报错。  如果你不想让 VC++ 自作聪明地把这个视为错误的话,可以定义错误提示中的说的那个宏,这可以关闭此项错误检查。


一开始我想让你试试修改头文件是因为:

你知道 strcpy 是沿袭自 C 的,C 标准确实是因为安全原因而在 C11 中弃用了 strcpy,加入了 strcpy_s 函数。 我看到你用的是 C 版本的头文件,担心是这样引起 IDE 报错的。

可你用了 cstring 还有错误,这就不应该了。这个 strcpy 函数是 C++ 标准库中的合法成员,IDE 不应该自作主张地弃用它(而且还是默认弃用)。不过看起来 VC++ 就是做了这样多余的事。

总之,就是 IDE 的锅...

查看完整回答
反对 回复 2018-05-01
  • 2 回答
  • 0 关注
  • 1505 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信