scanf函数不能运行(VS2019)(解决方案)

简介: 直接放在拷贝文档里,以后每次建立新项目时就会自动添加这行代码(详情请看本人空间的:VS文件初始化教程)

很多同学在出识C语言时大多会遇到scanf不能使用的问题


先上解决方案!


方案一:在每一个scanf后面加_s        scanf—>scanf_s


scanf_s


方案二:在项目第一行定义_CRT_SECURE_NO_WARNINGS


#define _CRT_SECURE_NO_WARNINGS 1


方案三:一劳永逸,但需要一点技术。找到vs的拷贝文件把我们方案二的代码


直接放在拷贝文档里,以后每次建立新项目时就会自动添加这行代码(详情请看本人空间的:VS文件初始化教程)


现在我就来告诉大家为什么报错,以及如何解决。


09660565b2c8452c86892ee482377541.png


 我们在写好代码后,ctrl+F5让代码运行


27f59f39dbad46d2bfb084cbeefad3e0.png

57279aaf1ba74c88a8a7686585f713c8.png


随之而来的就是一乱连串的报错哈哈,为什么会出现这中情况呢?我们来看一下输出分析


2ab7792c8cf4420f807a6383bf05c04e.png


他说:scanf这个函数不安全,建议我们使用scanf_或者使用_CRT_SECURE_NO_WARNINGS


我们来测试一下


1. 加上_s


c1156a8a18ee40959a989bd38f2c0671.png


2. 定义_CRT_SECURE_NO_WARNINGS


1c2e473f46164eff88ff9c2b543a9495.png


都能使代码很好的完成。


这时候很多好奇的宝贝就会问了,为什么不安全呢,我们难道学了个不安全的函数?


我们通过测试代码来阐述它的不安全


#define _crt_secure_no_warnings 1
#include<stdio.h>
int main()
{
  char arr[5] = { 0 };
  scanf("%s", arr);
  //这时候scanf就可能不安全了,arr定义的5个空间,而我们通过scanf可以输入很多个数字
  //比如输入六个数字然后回车,会直接报错
  //scanf是你给它多少它直接存多少,没有管空间是否能承受得住
  //scanf_s是只有vs里才有的,其他编译器不易定能运行成功
  //所以我们直接在第一行直接定义#define _crt_secure_no_warnings 1消除报错
  //就不用每次写scanf的时候都写成scanf_s
  return 0;
}


我们定义的arr数组为5个空间,而我们通过scanf可以输入很多个数字


比如输入六个数字然后回车,会直接报错


scanf是你给它多少它直接存多少,没有管空间是否能承受得住

另外scanf_s是只有vs里才有的,其他编译器不易定能运行成功(不具有通性)


所以长远来看我们最好还是使用方案二,三的方法消除报错。

相关文章
|
9月前
|
存储 C语言
C语言的scanf的函数输入数据
C语言的scanf的函数输入数据
71 1
|
4月前
|
C语言
初识C语言:与计算机的交流之输入与输出(scanf和printf)
初识C语言:与计算机的交流之输入与输出(scanf和printf)
330 0
|
6月前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
223 2
|
6月前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
122 1
|
9月前
|
IDE 测试技术 开发工具
|
8月前
|
存储 缓存 移动开发
【C语言基础篇】scanf()函数详解
【C语言基础篇】scanf()函数详解
|
9月前
|
编译器 C++
VS编译器对scanf函数不安全报错的解决办法(详细步骤)
VS编译器对scanf函数不安全报错的解决办法(详细步骤)
|
编译器 文件存储 C++
一劳永逸的方法解决函数scanf报错问题
一劳永逸的方法解决函数scanf报错问题
183 0
|
9月前
|
存储 C语言 索引
C语言用scanf函数输入数据
C语言用scanf函数输入数据
115 0
|
9月前
|
存储 C语言
C语言用printf函数输出数据
C语言用printf函数输出数据
110 0