VS2019中scanf返回值被忽略的問(wèn)題及其解決方法
昨天在使用Visual Studio 2019編寫C語(yǔ)言程序時(shí)遇到了scanf返回值被忽略問(wèn)題

因?yàn)槲乙彩莿傞_始學(xué)習(xí)C語(yǔ)言,第一次遇到這種問(wèn)題,也不知道怎么回事,然后就上Chrome研究了一番,才知道原因,并且找到了幾種分散在個(gè)個(gè)角落的解決方法,我在這里歸納總結(jié)一下。
問(wèn)題原因:
在ANSI C中只有scanf(),沒(méi)有scanf_s(),但是scanf()在讀取時(shí)不檢查邊界,所以可能會(huì)造成內(nèi)存泄漏。于是Microsoft公司在VS編譯器中提供了scanf_s(),如果想繼續(xù)使用scanf這個(gè)不安全的函數(shù),可以通過(guò)以下方法解決。
方法①:
把scanf改成:scanf_s
這是VS編譯器特有,既然覺(jué)得scanf()不安全,那它就自己定義了一個(gè)scanf_s()。

其實(shí)我是不推薦大家使用這種方法的,因?yàn)閟canf_s它是vs編譯器特有的,也就是說(shuō)它不具有跨平臺(tái)性/可移植性,在其他編譯器上無(wú)法識(shí)別運(yùn)行
方法②:
編譯器錯(cuò)誤提示的原因至于VS中的SDL檢查,只需要找到它并關(guān)閉就可以了。
關(guān)閉步驟:右鍵“項(xiàng)目文件” —— “屬性” —— “配置屬性” ——“C/C++”——“常規(guī)”——“SDL檢查”改為“否”即可,如圖所示

改為否后,再次編譯就沒(méi)問(wèn)題了。
方法③:
在C語(yǔ)言程序開頭添加代碼: #pragma warning(disable:4996)//全部關(guān)掉
(或者)
在C語(yǔ)言程序開頭添加代碼: #pragma warning(once:4996)//僅顯示一個(gè)

方法④:
在C語(yǔ)言程序開頭添加代碼: #define _CRT_SECURE_NO_WARNINGS//忽略安全檢測(cè)

每次都要加這么一串代碼,是不是感覺(jué)有點(diǎn)費(fèi)力??(我一開始找到這種方法的時(shí)候第一感覺(jué)也是這樣的)
其實(shí)不用那么麻煩,這里還可以細(xì)分為兩種方法:
(1)我們只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 這個(gè)宏就可以了,具體操作如下圖所示:

(2)在VS2019的安裝路徑下找到“newc++file.cpp”這個(gè)文件,用記事本的方式打開,并把這行代碼復(fù)制粘貼上去,然后保存即可,這樣以后每次新建.c源文件的時(shí)候這行代碼就會(huì)自動(dòng)出現(xiàn)在第一行。


【注意】如果在保存的時(shí)候出現(xiàn)“拒絕訪問(wèn)”的情況,可以測(cè)試下載安裝一個(gè)工具“Notepad++”,然后以管理員的身份運(yùn)行這個(gè)軟件,用這個(gè)軟件打開上面提到的“newc++file.cpp”文件,復(fù)制粘貼代碼上去后,保存即可。
最后提到的這兩種都是一次搞定,后面都不用再弄了。
我個(gè)人偏向于方法④的第(1)種方法。我也比較推薦你使用這種方法——畢竟簡(jiǎn)單而且可以說(shuō)是一勞永逸
到此這篇關(guān)于VS2019中scanf返回值被忽略的問(wèn)題及其解決方法的文章就介紹到這了,更多相關(guān)VS2019 scanf返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
fastjson到底做錯(cuò)了什么?為什么會(huì)被頻繁爆出漏洞?(推薦)
前段時(shí)間,fastjson被爆出過(guò)多次存在漏洞,很多文章報(bào)道了這件事兒,并且給出了升級(jí)建議。本文給大家分享fastjson的releaseNote以及部分源代碼。感興趣的朋友跟隨小編一起看看吧2020-07-07
BurpSuite超詳細(xì)安裝和基礎(chǔ)使用教程(已破解)
Burp?Suite?是用于攻擊web?應(yīng)用程序的集成平臺(tái)包含了許多Burp工具,它主要用來(lái)做安全性滲透測(cè)試,可以實(shí)現(xiàn)攔截請(qǐng)求、Burp?Spider爬蟲、漏洞掃描(付費(fèi))等類似Fiddler和Postman但比其更強(qiáng)大的功能,今天給大家介紹下BurpSuite安裝破解使用教程,感興趣的朋友一起看看吧2022-10-10
將新型冠狀病毒轉(zhuǎn)二進(jìn)制的代碼(首發(fā))
這篇文章主要介紹了新型冠狀病毒轉(zhuǎn)二進(jìn)制的相關(guān)知識(shí),分為java,js,php,pthon等語(yǔ)言的實(shí)例代碼,需要的朋友可以參考下2020-02-02
關(guān)于mapboxgl加載tiff的問(wèn)題
這篇文章主要介紹了mapboxgl加載tiff,先使用geotiff.js解析tiff數(shù)據(jù),再配合使用canvas繪制圖片導(dǎo)出base64格式數(shù)據(jù),然后就可以使用添加到mapboxgl圖層了,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
用asp與php實(shí)現(xiàn)百度ping服務(wù)的代碼
分別用asp與php實(shí)現(xiàn)百度ping服務(wù)的代碼,需要的朋友可以參考下2012-02-02



