第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 的锅...
- 2 回答
- 0 关注
- 1505 浏览
添加回答
举报
0/150
提交
取消