1.VS2015提示gets未定义
故障原因:在VS2015中,stdio.h头文件中已经不存在gets()函数定义,而被更安全的get_s()函数和fgets()函数所替代。故直接用gets()会出现未定义的错误。
解决方法:将gets()修改成get_s()即可。
类似问题解决方法:VS2015编译器有自动补全功能,可以充分利用这个功能来查看C/C++库函数以及头文件定义的更新和优化。
扩展资料:
作用:gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取;
缺点:因为本函数可以无限读取,易发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。
优化历程:
1、由于可以无限读取,所以在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代;
2、宽字符版本,当使用unicode宽字符文本时,使用这个函数 _getws();
3、在C11标准中被删除,可用C标准库中的fgets()代替。
参考资料来源:搜狗百科-gets
2.vs2013出错未定义标识符scanf,求解
vs2013出错未定义标识符scanf是因为未包含头文件#include<stdio.h>;。添加#include<stdio.h>;即可。
工具/材料:以Microsoft Visual Studio 2013为例。
1、首先在桌面上,点击“Microsoft Visual Studio 2013”图标。
2、然后在该界面中,输入头文件“#include<stdafx.h> #include<windows.h> #include<stdio.h>”。
4、最后在该界面中,输入定义标识符scanf的代码“void main() { int a,b,char;printf("inout a,b,c、n"); scanf("%d%d%d",&a.&base.&c); printf("inout a,b,c、n"); Sleep(5000) } ”。
转载请注明出处51数据库 » vs2015dword未定义