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里才有的,其他编译器不易定能运行成功(不具有通性)


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

相关文章
|
6月前
|
程序员 编译器 C语言
用printf函数输出数据
用printf函数输出数据
41 2
|
6月前
13.C语言:用printf函数输出数据
13.C语言:用printf函数输出数据
100 0
|
4月前
|
存储 缓存 运维
函数计算产品使用问题之SD上安装了inpaint anything插件,但是不显示,该如何解决
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
321 0
|
6月前
|
IDE 测试技术 开发工具
|
6月前
|
程序员 C语言
【C语言】函数----函数的分类、库函数详解(strcpy、memset)、自定义函数的实现(找较大值、交换两个数)
【C语言】函数----函数的分类、库函数详解(strcpy、memset)、自定义函数的实现(找较大值、交换两个数)
39 0
|
编译器 C语言 C++
如何解决VS中scanf使用时报错或无法使用的问题
如何解决VS中scanf使用时报错或无法使用的问题
184 0
|
6月前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
405 0
|
6月前
|
C语言
使用printf函数输出数据
在C语言中,printf函数是一个常用的标准库函数,用于在控制台输出格式化的字符串和数据。它允许我们按照指定的格式输出各种类型的数据,包括整数、浮点数、字符和字符串等。
69 0
|
6月前
|
存储 C语言
C语言用printf函数输出数据
C语言用printf函数输出数据
62 0
|
6月前
|
C语言
C语言中printf函数输出数据
C语言中printf函数输出数据
65 0