news 2026/6/10 9:19:38

2022VS及以上版本的scanf函数的使用,引发的错误导致编译器运行不了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2022VS及以上版本的scanf函数的使用,引发的错误导致编译器运行不了

注:首先我先说一下由于VS版本的更新,Visual Studio软件上对scanf函数的使用,是不同于其他版本,Visual Studio 2022及以上的版本用的是scanf_s函数进行输入读取,因为S 认为scanf存在缓冲区溢出风险,默认禁用了这类 “不安全” 函数,要求你使用微软提供的安全替代函数scanf_s,或手动关闭该警告。

以上我在VS写的代码检测到的错误只有scanf': This function or variable may be unsafe. Consider using scanf s instead. To disable deprecation, useC4996test2test.c26CRT SECURE NO_WARNiINGS. See online help for details.这一个错误导致编译失败

接下来有三种解决方案,选择你喜欢的一种

方案 1:改用安全函数scanf_s(最符合 VS 推荐)

scanf_sscanf的安全增强版本,对于整数读取,参数和scanf基本一致,直接替换即可:

// 原代码 scanf("%d", &n); // 替换为 scanf_s("%d", &n);

如果后续读取字符串,scanf_s需要额外传入缓冲区大小参数,需注意语法差异)

方案 2:禁用安全警告(最简便,保留原生scanf

  1. 右键你的项目 → 属性

  2. 配置属性 → C/C++ → 预处理器 → 预处理器定义

  3. 点击 “编辑”,添加宏:_CRT_SECURE_NO_WARNINGS

  4. 点击 “确定” 保存,重新编译即可消除 C4996 错误。

方案三:在我们写的代码中使用预处理指令

#define _CRT_SECURE_NO_WARNINGS // 屏蔽VS编译器对scanf等函数的安全警告,其他编译器可忽略 #include "stdio.h" #include <string.h>

注:#define _CRT_SECURE_NO_WARNINGS 这段代码必须是放在所有头文件定义的上面

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:05:19

Cyber Triage 3.16 发布 - 通过 Cyber Triage Enterprise 更快开展调查

Cyber Triage 3.16 发布 - 通过 Cyber Triage Enterprise 更快开展调查 Digital Forensics Specialized For Incident Response 请访问原文链接&#xff1a;https://sysin.org/blog/cybertriage-3/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;s…

作者头像 李华
网站建设 2026/6/4 13:38:56

原圈科技领衔:2026文旅AI市场分析三大平台揭秘,读懂客户抢先机!

本文聚焦2026年文旅行业AI市场分析&#xff0c;精选三大平台进行对比。其中&#xff0c;原圈科技凭借其在全网数据整合、分钟级报告生成及深度行业场景应用方面的突出表现&#xff0c;被普遍视为企业进行AI市场分析的理想选择。该平台在技术实力和功能全面性上表现优异&#xf…

作者头像 李华
网站建设 2026/6/10 11:10:29

DataCMD 怎么部署?用服务器搭建终端数据可视化工具

如果你日常做运维、管服务器,肯定对下面这些场景非常熟悉: 🖥️ top、htop、df -h、iostat 来回敲 😵 数据是有了,但全是文本,靠自己脑补趋势 📉 CPU/负载突然飙高,只能事后翻日志 🧠 想把常用指标“看成图”,却又不想上复杂监控系统 后来我开始用 DataCMD 这种…

作者头像 李华
网站建设 2026/6/10 13:17:58

二分+滑窗|hash

lc2982二分定窗class Solution { public:int maximumLength(string s) {auto check [&](int mid)->bool {unordered_map<char, int> fre_map;for (int i 0; i < s.length();) {int l i;char c s[i];int fre 0;while (s[i] c) {i;}if (i - l > mid) {f…

作者头像 李华
网站建设 2026/6/10 11:13:02

使用 frp 实现内网穿透:让本地服务器安全暴露到公网

使用 frp 实现内网穿透&#xff1a;让本地服务器安全暴露到公网 frp&#xff08;frp 是 Fast Reverse Proxy 的缩写&#xff09;是一个轻量、高效的内网穿透工具&#xff0c;可以将内网的 SSH、Web、MySQL 等服务安全地暴露到公网。本文基于一个实际生产环境&#xff0c;介绍 …

作者头像 李华