VS/C#vs2015 运行错误提示是的错误

为了账号安全,请及时绑定邮箱和手机
关于C代码报不安全的时候怎么办?我是在vs2015中运行的,像c#中那样在语句前加unsafe{}不好使啊。
报错信息:严重性 代码 说明 项目 文件 行 禁止显示状态错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. struc_ary c:\users\aaron\documents\visual studio 2015\projects\struc_ary\struc_ary\源.c 24原始代码#include&stdio.h&struct Student{
char addr[30];}; int main(void){ struct
Student sda[5] = {
{1001,"xiaoming",'M',20,60.4,"chong qing" },
{1002,"nai lv",'M',23,90,"qingdao"},
{1003,"hong",'w',23,69,"henan"},
{1004,"arrm",'m',33,60,"hill lk" },
{1005,"qinyang",'m,',33,34,"jiao pi gou"}}; int id = 0; int n = 0; printf("please input
student id :");
scanf("%d", &id); for ( n = 0; n & 5; n++) {
if (id==sda[n].id)
printf("%d,%s,%c,%d,%0.3f,%s\n", sda[n].id, sda[n].name,
sda[n].sex, sda[n].age, sda[n].score, sda[n].addr);
} } if (n==5) {
printf("not found\n"); } getch(); return 0;}
欢迎交流。
你好。你此时定义了一个id为int型,但是你的输入计算机是没法控制的。int型在内存中开辟的大小有限,你如果输入01010。如此大一串数,如果你进行了异常判断当然没问题,但是你没进行异常判断所以scanf会存在溢出风险,一旦发生溢出不处理,程序就会崩溃,这是为什么报错的原因。而scanf_s输入流则不同,它就是为了避免这种情况而诞生的,比如说输入char a[20] scanf_s("%s",a,20);这样一来,编译器就知道了这个输入长度最多为20,相当于帮你处理了异常。以上是我的浅见,欢迎交流。
已被提问者采纳
你还没有登录,请先登录或注册慕课网帐号
在代码中加入#pragma warning(disable:4996)或者在创建项目时把安全周期检查的勾给去掉
你还没有登录,请先登录或注册慕课网帐号
#define _CRT_SECURE_NO_WARNINGS
你还没有登录,请先登录或注册慕课网帐号
7是我的幸运数
我把scanf();换成scanf_s();就生成通过?我不理解为啥?如果真的在c代码遇到提示代码不安全我应怎么做?求前辈指教啊
你还没有登录,请先登录或注册慕课网帐号
19875人关注
Copyright (C)
All Rights Reserved | 京ICP备 号-2本帖子已过去太久远了,不再提供回复功能。2006年4月 总版技术专家分月排行榜第一
2006年3月 总版技术专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

参考资料

 

随机推荐