一劳永逸解决Visual Studio中scanf()函数报错的问题

本文介绍了在VisualStudio中使用scanf函数可能遇到的错误,原因在于其不安全性。给出了使用scanf_s替代和一劳永逸地通过修改newc++file.cpp文件来禁用警告的方法。
摘要由CSDN通过智能技术生成

目录

一、scanf函数简要介绍

二、为什么Visual Studio中直接使用scanf()会报错

三、如何解决报错问题

四、一劳永逸的解决方法


一、scanf函数简要介绍

scanf函数用于读取用户的键盘输入,与printf函数一样,使用时需调用其头文件stdio.h。

scanf("%d",&i);

因为 C 语言的数据都是有类型的,scanf函数必须知道用户的输入类型,才能处理数据。它的第一个参数是一个格式字符串,里面会放置占位符,告诉编译器如何解读用户的输入,需要提取的数据是什么类型。它的其余参数就是存放用户输入的变量,格式字符串里面有多少个占位符,就有多少个变量。

注意:变量前面必须加上& 运算符(指针变量除外),因为scanf() 传递的不是值,而是地址,即将变量i 的地址指向用户输入的值。如果是指针变量(比如字符串变量),那就不用加& 运算符。

二、为什么Visual Studio中直接使用scanf()会报错

之所以VS中不能直接使用,是因为直接使用scanf函数会不安全,我们以下面这串代码为例:

#include <stdio.h>
int main()
{
	char arr[5] = { 0 };//数组的初始化,五个字符
	scanf("%s", arr);//如果输入超过五个字符?
	printf("%s\n", arr);
	return 0;
}

scanf函数在读取的时候不会关心数组中最多可以放几个元素,而是会全部读取用户的输入值,若果用户输入超过五个字符,就会产生错误!

三、如何解决报错问题

VS提醒我们使用scanf_s函数来代替,但是使用此函数容易导致在跨平台运行的时候无法编译,所以不如使用_CRT_SECURE_NO_WARNINGS来使报错失效,方法是在程序开头加上

#define _CRT_SECURE_NO_WARNINGS 1

 但是每次写代码的时候都要重新加上这段代码,就显得十分的麻烦,因此为大家推荐一个一劳永逸的方法!

四、一劳永逸的解决方法

在VS的安装路径下找到newc++file.cpp这个文件(推荐使用everything搜索,很方便)

然后我们将其复制到桌面一份(因为直接操作有可能会提示没有权限),然后右击,选择在记事本中编辑,最后将#define _CRT_SECURE_NO_WARNINGS 1复制进去然后保存,最后再放回原路径中替换文件,就大功告成了!

可以看到,当我们建立新项目的时候,VS里默认就会忽略scanf函数的报错问题了!

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值