VS2019提示scanf不安全問題的解決
VS2019提示scanf不安全問題
我們現(xiàn)在學(xué)的就是使用scanf()語句進(jìn)行輸入,但是vs2019中卻報(bào)錯(cuò)顯示不安全

首先我先來說一下scanf和scanf-s的區(qū)別
- scanf()函數(shù)是標(biāo)準(zhǔn)C中提供的標(biāo)準(zhǔn)輸入函數(shù),用以用戶輸入數(shù)據(jù)
- scanf_s()函數(shù)是Microsoft公司VS開發(fā)工具提供的一個(gè)功能相同的安全標(biāo)準(zhǔn)輸入函數(shù),從vc++2005開始,VS系統(tǒng)提供了scanf_s()。在調(diào)用該函數(shù)時(shí),必須提供一個(gè)數(shù)字以表明最多讀取多少位字符。
- scanf()在讀取數(shù)據(jù)時(shí)不檢查邊界,所以可能會(huì)造成內(nèi)存訪問越界
//例如:分配了5字節(jié)的空間但是用戶輸入了10字節(jié),就會(huì)導(dǎo)致scanf()讀到10個(gè)字節(jié)
char buf[5]={'\0'};
scanf("%s", buf);
//如果輸入1234567890,則5以后的部分會(huì)被寫到別的變量所在的空間上去,從而可能會(huì)導(dǎo)致程序運(yùn)行異常。
以上代碼如果用scanf_s()則可避免此問題:
char buf[5]={'\0'};
scanf_s("%s",buf,5); //最多讀取4個(gè)字符,因?yàn)閎uf[4]要放'\0'
//如果輸入1234567890,則buf只會(huì)接受前4個(gè)字符
對(duì)于解決這個(gè)報(bào)錯(cuò)問題有幾個(gè)解決辦法
1.最簡(jiǎn)單粗暴的
在使用vs2019時(shí)記住每次寫scanf時(shí)全都寫成scanf-s
2.在項(xiàng)目中進(jìn)行屬性的更改
第一步:創(chuàng)建空項(xiàng)目
選擇創(chuàng)建新項(xiàng)目

選擇空項(xiàng)目進(jìn)行創(chuàng)建

2.創(chuàng)建源文件

右擊


添加c++文件
3.更改屬性

右擊源.cpp

選擇屬性

此時(shí)常規(guī)中的SDL選項(xiàng)現(xiàn)實(shí)的是“是 (/sdl)”

將此處改為“否 (/sdl-)”并確認(rèn)即可

此時(shí)雖然仍然會(huì)有警告出現(xiàn),但是已經(jīng)不影響程序的調(diào)試運(yùn)行了,但是這個(gè)方法的缺點(diǎn)就是每一次創(chuàng)建新的c++文件的時(shí)候都要改一次屬性,比較麻煩。
第三個(gè)辦法:加宏
在最上面加上宏:
#define _CRT_SECURE_NO_WARNINGS 1
解除scanf的不安全問題;
到此這篇關(guān)于VS2019提示scanf不安全問題的解決的文章就介紹到這了,更多相關(guān)VS2019 scanf不安全內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Windows Server 2019 Ipsec 安全策略(實(shí)現(xiàn)兩機(jī)之間的安全通信)
- Windows?Server?2019服務(wù)器安全設(shè)置之防火墻、限制遠(yuǎn)程訪問和IP黑名單
- windows server 2019 性能優(yōu)化和安全配置小結(jié)
- Windows Server 2019 取消默認(rèn)IE 瀏覽器安全增強(qiáng)配置的步驟
- 分析jackjson的安全漏洞CVE-2019-14379
- Windows 2016 服務(wù)器安全設(shè)置
- Windows?Server?2019?安裝后的一些設(shè)置收集
相關(guān)文章
解決maven第一次創(chuàng)建項(xiàng)目太慢的問題
Maven是 Apache 下的一個(gè)純 Java 開發(fā)的開源項(xiàng)目,是一個(gè)項(xiàng)目構(gòu)建和管理的工具;它提供了幫助管理 構(gòu)建、文檔、報(bào)告、依賴、scms、發(fā)布、分發(fā)的方法。這篇文章主要介紹了maven第一次創(chuàng)建項(xiàng)目太慢的解決方法,需要的朋友可以參考下2020-02-02
5個(gè)Linux平臺(tái)程序員最愛的開發(fā)工具匯總
這篇文章主要介紹了5個(gè)Linux平臺(tái)程序員最愛的開發(fā)工具匯總,程序最重要的工具就是源碼編輯器了,或者是一個(gè)全能的IDE,本文就羅列了5個(gè)Linux平臺(tái)最常用的編輯給大家,需要的朋友可以參考下2014-09-09
Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)
有時(shí),我們會(huì)碰到對(duì)字符串的排序,若采用一些經(jīng)典的排序算法,則時(shí)間復(fù)雜度一般為O(n*lgn),但若采用Trie樹,則時(shí)間復(fù)雜度僅為O(n)2014-03-03
分享4個(gè)最受歡迎的大數(shù)據(jù)可視化工具
大數(shù)據(jù)可視化是進(jìn)行各種大數(shù)據(jù)分析解決的最重要組成部分之一。這篇文章主要介紹了4個(gè)最受歡迎的大數(shù)據(jù)可視化工具,需要的朋友可以參考下2019-06-06
MobaXterm遠(yuǎn)程登錄工具功能與應(yīng)用小結(jié)
MobaXterm是一款功能強(qiáng)大的遠(yuǎn)程終端軟件,主要支持SSH登錄,擁有多種遠(yuǎn)程協(xié)議,實(shí)現(xiàn)跨平臺(tái)訪問,它包括多會(huì)話管理、本地命令行執(zhí)行、圖形化界面集成和文件傳輸?shù)裙δ?提供豐富的自定義選項(xiàng)和安全特性,感興趣的朋友一起看看吧2025-02-02
Typora配置PicGo時(shí)提示Failed?to?fetch的問題解決(typora圖像問題)
這篇文章主要介紹了Typora配置PicGo時(shí)提示Failed?to?fetch的問題解決(typora圖像問題),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
基于Python和Java實(shí)現(xiàn)單詞計(jì)數(shù)(Word Count)
Spark框架也是MapReduce-like模型,采用“分治-聚合”策略來對(duì)數(shù)據(jù)分布進(jìn)行分布并行處理,本文就來利用Spark實(shí)現(xiàn)單詞統(tǒng)計(jì)的功能,需要的可以參考一下2023-05-05

