求救,关于函数strcpy的错误

疯狂-的-蜗牛 2011-03-07 12:37:03
我在VS2008里面建了一个对话框的工程,然后把以前在VC++6.0里的一段代码粘贴了上去,可是就报错了,原来在VC6.0里面没错啊,还运行了呢。源码是这样的:
strcpy(nd.szTip,"我的播放器\n试试看");
报错:1>d:\my documents\visual studio 2008\projects\myplay\myplay\myplaydlg.cpp(220) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
各位大侠,帮我一下啊,急急急!!!!
我是新来的菜鸟,没什么分数……
...全文
591 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂-的-蜗牛 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qman007 的回复:]
引用 13 楼 mfcing 的回复:
虽然只是警告,可以运行,但是在运行后它所显示的不是我要的这句:我的播放器\n试试看;而是一大串像繁体字一样的文字,所以说还是有影响的、

我知道你想要做什么,shellnotify,没错吧
用shellnotify系列函数和结构体的UNICODE版本
吧,UNICODE版本下拷贝字符串的函数是

nd.szTip[sizeof(nd.szTip……
[/Quote]谢谢了,这回可以了、
LuciferStar 2011-03-07
  • 打赏
  • 举报
回复
strcpy_s(dest,strlen(dest),source);
羽飞 2011-03-07
  • 打赏
  • 举报
回复
strcpy函数是不安全的,可以通过代码注入的方式修改你的程序
羽飞 2011-03-07
  • 打赏
  • 举报
回复
这不是错误,只是个警告,LZ仔细看看,编译器说的意思是strcpy是个不安全的函数,请考虑使用strcpy_s替换
Dreadnought 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huangcheng90 的回复:]
这个函数是不安全的.... 用StringCChCopy 或者其它安全的C++库里面的同类型的桉树
[/Quote]
不好意思 是同类型的函数 打错字了
Dreadnought 2011-03-07
  • 打赏
  • 举报
回复
这个函数是不安全的.... 用StringCChCopy 或者其它安全的C++库里面的同类型的桉树
qman007 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mfcing 的回复:]
虽然只是警告,可以运行,但是在运行后它所显示的不是我要的这句:我的播放器\n试试看;而是一大串像繁体字一样的文字,所以说还是有影响的、
[/Quote]
我知道你想要做什么,shellnotify,没错吧
用shellnotify系列函数和结构体的UNICODE版本
吧,UNICODE版本下拷贝字符串的函数是

nd.szTip[sizeof(nd.szTip)/sizeof(wchar_t)-1] = '\0';
wcsncpy(nd.szTip,sizeof(nd.szTip)/sizeof(wchar_t)-1,
OLESTR("我的播放器\n试试看"));

宏 OLESTR 的定义:
define OLESTR(str) L##str
在 wtypes.h 吧,我有点忘了,你自己查查
疯狂-的-蜗牛 2011-03-07
  • 打赏
  • 举报
回复
虽然只是警告,可以运行,但是在运行后它所显示的不是我要的这句:我的播放器\n试试看;而是一大串像繁体字一样的文字,所以说还是有影响的、
qman007 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yang79tao 的回复:]
转2008经典问题,楼上的strncpy仍然不行,只是老的crt函数都不行,解决办法有二:
一:如果你时间足够,可以把所有老的crt调用都改居新的,比如strcpy->strcpy_s;
二:在工程中定义 _CRT_SECURE_NO_WARNINGS
[/Quote]

虽然警告还是有的,但是运行隐患已经没有了。
警告一条很健康的语句,那是vs的弱智。
TandyT 2011-03-07
  • 打赏
  • 举报
回复
这个只是个警告而已,不影响你的程序编译和运行的。
无水先生 2011-03-07
  • 打赏
  • 举报
回复
stycpy一般不用了,目前推荐的是memcpy
youngwolf 2011-03-07
  • 打赏
  • 举报
回复
转2008经典问题,楼上的strncpy仍然不行,只是老的crt函数都不行,解决办法有二:
一:如果你时间足够,可以把所有老的crt调用都改居新的,比如strcpy->strcpy_s;
二:在工程中定义 _CRT_SECURE_NO_WARNINGS
qman007 2011-03-07
  • 打赏
  • 举报
回复
nd.szTip[sizeof(nd.szTip)-1] = '\0';
strncpy(nd.szTip,sizeof(nd.szTip)-1"我的播放器\n试试看");
Sidyhe 2011-03-07
  • 打赏
  • 举报
回复
lstrcpy
Eleven 2011-03-07
  • 打赏
  • 举报
回复
this is warning

'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧