在用vs2013编译时出现的问题,求解答

qq1908625082 2016-01-22 11:46:20
#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
void swap(char *p1,char *p2);
char str1[31],str2[31],str3[31]; //数组的首元素有它的地址

printf("input three line:\n");
gets_s(str1);
gets_s(str2);
gets_s(str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("now,the order is:\n");
}
void swap(char *p1,char *p2)
{char p[31];
strcpy_s(p,p1);strcpy_s(p1,p2);strcpy_s(p2,p);
}


顺便解释下这些是怎么回事,谢谢
错误 1 error 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.


2 IntelliSense: 没有与参数列表匹配的 重载函数 "strcpy_s" 实例
参数类型为: (char *, char *)

3 IntelliSense: 没有与参数列表匹配的 重载函数 "strcpy_s" 实例
参数类型为: (char *, char [31])


...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq1908625082 2016-01-22
  • 打赏
  • 举报
回复
引用 1 楼 paschen的回复:
因为这个函数是不安全,可能造成缓冲区溢出,所以现在有新的strcpy_s来代替 如果仍想用可以选择以下任何一种方法: 1、新建项目时不要勾选安全开发生命周期检查 2、在项目属性C/C++命令行中加上 /D _CRT_SECURE_NO_WARNINGS 如果要用strcpy_s,需要一个额外的参数表示缓冲区大小
那可不可以直接在这里面改呢,先谢谢你了
paschen 2016-01-22
  • 打赏
  • 举报
回复
因为这个函数是不安全,可能造成缓冲区溢出,所以现在有新的strcpy_s来代替 如果仍想用可以选择以下任何一种方法: 1、新建项目时不要勾选安全开发生命周期检查 2、在项目属性C/C++命令行中加上 /D _CRT_SECURE_NO_WARNINGS 如果要用strcpy_s,需要一个额外的参数表示缓冲区大小

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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