C语言高版本vs编译器scanf_s等报错原因方法
很多高校初学C语言应该用的都是vs2010编译器,但是在结课作业时,很多人明显想用高版本编译器,因为联想等诸多功能是在是比较好用。但高版本编译器,诸如scanf要写为scanf_s、fopen要写fopen_s等等等等。对初学者来讲很不友好。
因此,这里我给出两种解决办法,并解释一下报错原因。
先是给出解决方法吧:
第一种:
#pragma warning(disable:4996)//忽略一些函数不安全报错,以达到编译器的要求
这一行代码的意思我已经写在注释里了,放在预处理那块即可(即#define那里)
第二种:
项目——最底下的属性——C/C++——SDL检查改为否——确认
这样即可,每个项目都要怎么改
最后,简单说一下这个的原因,首先这些加_s函数叫安全函数,来源都是微软,所以只有在vs系列编译器能见到
scanf()、gets()、fgets()、strcpy()、strcat() 等都是C语言自带的函数,它们都是标准函数,但是它们都有一个缺陷,就是不安全,可能会导致数组溢出或者缓冲区溢出。
scanf_s()、gets_s()、fgets_s()、strcpy_s(