vs 2013编译器的问题,编译的c语言,为什么出错了,可以帮我修改一下么
展开全部
使用了不安全的函数scanf,有两种解决方法,第一:使用scanf_s函数代替;第二:禁用该提示,具体,右击工程 - 属性 - 配置属性 - C/C++ - 命令行,命令行增加 /D _CRT_SECURE_NO_WARNINGS
至于为什么是不安全的函数,scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节。为了解决这个安全问题,从vc++2005开始,提供scanf_s()函数,增加了一个指示长度的参数,如:char d[20];scanf_s("%s",d,20);
楼上有大神给出了c++的做法,也是不错哦,不用考虑不安全函数问题了。
至于为什么是不安全的函数,scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节。为了解决这个安全问题,从vc++2005开始,提供scanf_s()函数,增加了一个指示长度的参数,如:char d[20];scanf_s("%s",d,20);
楼上有大神给出了c++的做法,也是不错哦,不用考虑不安全函数问题了。
更多追问追答
追问
gets也不行,是不是也是这个原因
追答
是的,大概有strcpy、strcat、sprintf 和 gets
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询