详解VS2019使用scanf()函数报错的解决方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详解VS2019使⽤scanf()函数报错的解决⽅法
⽬录
scanf_s()函数
scanf_s()函数与scanf()函数的区别
VS2019使⽤scanf()函数报错的解决⽅法
解决⽅法⼀
解决⽅法⼆
解决⽅法三
解决⽅法四
⾸先来看⼀段很简单的C语⾔代码
#include<stdio.h>
int main(void)
{
char s[10];
scanf("%s",s);
printf("%s",s);
return 0;
}
这段代码的作⽤就是输⼊⼀个字符串,再把这个字符串输出。
在其他IDE(集成开发环境)上,是完全可以运⾏的,但是在Microsoft Visual Studio(美国微软公司开发的可视化编程开发软件)的系列软件上(从Microsoft Visual C++ 2005开始),Microsoft Visual Studio系列软件直接使⽤scanf()函数会报错,但是也提供了⼀个叫scanf_s()新格式化输⼊函数。
scanf_s()函数
在调⽤scanf_s()函数时,必须在可变参数表中提供⼀个数字来表明最多读取多少个字节的字符,另外很多额外带_s后缀的函数是为了让原版函数更安全,传⼊⼀个和参数有关的⼤⼩值,避免访问到不存在的元素。
所以上⾯那段代码在VS2019⾥要这样写:
#include<stdio.h>
int main()
{
char s[10];
scanf_s("%s",s,10);
printf("%s",s);
return 0;
}
scanf_s("%s", a,10);表⽰⽤户最多可以最多输⼊9个字符,这种情况程序可以正常编译运⾏,如果⽤户输⼊字符超过9个,程序运⾏结果就会出错。
scanf_s()函数的可变参数表⾥的10表⽰可以输⼊9个字符,因为s[9]⾥要存放'\0'字符。
scanf_s()函数与scanf()函数的区别
scanf() 函数:是标准格式化输⼊函数,它从标准输⼊设备(键盘)读取输⼊的信息。
其调⽤格式为:scanf("
scanf_s()函数:是针对scanf()函数在读取字符串时不检查边界,可能会造成内存泄露这个问题设计的。
scanf_s()函数⽤于读取字符串时,必须提供⼀个数字以表明最多读取多少位字符,以防⽌溢出。
scanf()函数和scanf_s()函数在整数、浮点数、单个字符等输⼊情况下基本功能相同。
两者的主要区别在于字符串的输⼊。
VS2019使⽤scanf()函数报错的解决⽅法
如果我们在VS2019环境下直接使⽤scanf()函数,程序会产⽣以下报错:
解决⽅法⼀
使⽤scanf_s()函数来代替scanf()函数。
解决⽅法⼆
点VS2019软件上⽅的⼯具→打开项⽬→打开属性页→打开配置属性→打开C/C++→在预处理器中添加_CRT_SECURE_NO_WARNINGS,点击确定。
解决⽅法三
在代码最最上⾯加⼊⼀句宏定义:#define _CRT_SECURE_NO_WARNINGS。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char s[10];
scanf("%s",s);
printf("%s",s);
return 0;
}
解决⽅法四
在代码最最上⾯加⼊⼀句代码:#pragma warning(disable:4996),作⽤是忽略此警告
#pragma warning(disable:4996)
#include<stdio.h>
int main()
{
char s[10];
scanf("%s", s);
printf("%s",s);
return 0;
}
到此这篇关于详解VS2019使⽤scanf()函数报错的解决⽅法的⽂章就介绍到这了,更多相关VS2019 scanf()报错内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。