vs2013是免费的吗里面scanf的问题

在Vs2013中,我们使用printf,scanf等输入输出函数时,编译会报错,提示我们使用printf_s,scanf_s等相应的函数,虽然这种方法
更有利于程序的安全,但很多时候很不方便。
如果要在VS2013中继续使用scanf,printf等函数,可添加这么一行代码
#pragma warning(disable:4996)
即可消除错误。
阅读(...) 评论()51CTO视频课程推荐:
5119人学习
4086人学习
1280人学习
查看:335|回复:2
#include&stdio.h&
#include&stdlib.h&
#include&string.h&
#include&conio.h&
typedef struct student
char name[20];
struct student *prior, *
sdu *creat(int n)
sdu *p, *h, *s;
h = (sdu*)malloc(sizeof(sdu));
h-&name[0] = '\0';
h-&prior = NULL;
h-&next = NULL;
for (i = 0; i & i++)
&&s = (sdu*)malloc(sizeof(sdu));
&&p-&next =
&&printf(&输入第%d个学生的姓名:&, i + 1);
&&gets_s(s-&name,20);
&&s-&prior =
&&s-&next = NULL;
p-&next = NULL;
sdu * search(char *a, sdu *h)
&&if (strcmp(y, a) == 0)
& &p = p-&
return NULL;
void del(sdu *p)
p-&next-&prior = p-&
p-&prior-&next = p-&
void main()
char sname[20]; sdu *head, *p, *k;
printf(&请输入要建立的节点个数:&);
scanf_s(&%d&, &number);
head = creat(number);
printf(&初始数据为:\n&);
for (k = head-& k != NULL; k-&next)
&&printf(&%s\n&, k-&name);
printf(&请输入要查找的姓名:&);
scanf_s(&%s&, sname);
p = search(sname, head);
if (p == NULL)
&&printf(&没有找到数据!\n&);
&&printf(&现在数据为:\n&);
&&for (k = head-& k != NULL; k-&next)
& &printf(&%s\n&, k-&name);
版规,发帖可获2无忧币
买关于VS本书吧,充分利用断点功能查看在每个阶段的各字符串如何。
程序设计,算法为王。
提出问题;分析问题;确定算法;画出流程图;编辑程序;调试程序;建立文档资料。
大家在开发板块贴代码的时候,请使用“插入代码”的功能。
[code]int main(){return 0;}[/code]
你先自己调试一下在任务管理器中新建任务不以系统管理权限创【22P】看见有人发单反照片做壁纸,忍不住Google Chrome 41.0.2272.89 Stable 补丁日关于 IE11 收藏网址的图标为什么我的电脑内存够却说我装不了Win8那
查看: 1314|回复: 0
VS2013 scanF函数使用问题。
签到天数: 4 天[LV.2]偶尔看看I
马上注册,欢迎加入IT之家社区大家庭。
才可以下载或查看,没有帐号?
error 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.
这个错误怎样解决,不用scanf_s
版权所有 (C)关于VS2013中scanf()函数的C4996错误
error&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&det
此错误的原因是:微软公司自己提供的安全函数scanf_s(),ANSI
C中没有scanf_s(),只有scanf()
解决方法总结:1、不用scanf()而改用scanf_s()
&&&&&&&&&&&&&&&&&&&&&&&&
2、在程序前面加#pragma warning(disable:4996)
&&&&&&&&&&&&&&&&&&&&&&&&
3、无需加代码,只需在新建项目时取消勾选“SDL检查”即可。
&&&&&&&&&&&&&&&&&&&&&&&&
scnaf()在读取时不检查边界,可能会存在内存泄漏的问题,而scanf_s()在读取时检查边界是一种更加安全的函数
& 百度百科关于scanf_s()的搜索解释:
很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时hacker可以利用原版的不安全性黑掉系统。比如:char
d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。
C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节
1、char_buf[5]={'\0'};
2、scanf("%s",buf);
如果输入,后面的部分会被写到别的空间上去。
以上代码如果用scanf_s,第二行应改为scanf_s("%s",buf,5),表示最多读取4个字符,因为buf[4]要放'\0'
scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.
vc++中提供了scanf_s(),在最新的VS2013中也提供了scanf_s()。在调用时,必须提供一个数字以表明最多读取多少位字符。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。VS2013使用scanf报错
[问题点数:40分]
VS2013使用scanf报错
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2014年2月 C/C++大版内专家分月排行榜第二2013年4月 C/C++大版内专家分月排行榜第二2013年3月 C/C++大版内专家分月排行榜第二2012年12月 C/C++大版内专家分月排行榜第二2012年11月 C/C++大版内专家分月排行榜第二2012年8月 C/C++大版内专家分月排行榜第二
2014年12月 C/C++大版内专家分月排行榜第三2014年5月 C/C++大版内专家分月排行榜第三2014年3月 C/C++大版内专家分月排行榜第三2013年12月 C/C++大版内专家分月排行榜第三2013年10月 C/C++大版内专家分月排行榜第三2013年9月 C/C++大版内专家分月排行榜第三2013年7月 C/C++大版内专家分月排行榜第三2013年5月 C/C++大版内专家分月排行榜第三2013年2月 C/C++大版内专家分月排行榜第三2013年1月 C/C++大版内专家分月排行榜第三2012年9月 C/C++大版内专家分月排行榜第三
2013年3月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2014年10月 C/C++大版内专家分月排行榜第三2014年4月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 vs2012和vs2013的区别 的文章

 

随机推荐