VisualStudio2019解決scanf函數(shù)報(bào)錯(cuò)問(wèn)題
一、問(wèn)題由來(lái)
在 Visual Studio 2019 編輯代碼時(shí),前期剛剛接觸到VS編譯器時(shí)存在的困惑,當(dāng)用scanf()
函數(shù),進(jìn)行輸入時(shí),在運(yùn)行的時(shí)候編譯器會(huì)出現(xiàn)警告報(bào)錯(cuò)。如下圖情況
二、為何會(huì)存在這個(gè)問(wèn)題
在Visual Studio 2019中,scanf函數(shù)會(huì)被標(biāo)記為不安全的函數(shù),因?yàn)樗鼪](méi)有檢查輸入緩沖區(qū)的大小。如果輸入緩沖區(qū)不夠大,scanf函數(shù)可能會(huì)導(dǎo)致緩沖區(qū)溢出,從而引發(fā)安全漏洞。
三、解決方法
方法1(scanf_s)不推薦
為了避免這個(gè)問(wèn)題, VS編譯器中可以使用scanf_s
函數(shù)代替scanf
。scanf_s函數(shù)具有相同的參數(shù)和行為,但添加了一個(gè)額外的參數(shù),用于指定輸入緩沖區(qū)的大小。例如,要讀取一個(gè)整數(shù),您可以這樣使用scanf_s函數(shù):
int num; if (scanf_s("%d", &num) != 1) { // scanf_s失敗,處理錯(cuò)誤 }
注意:如果您還想使用scanf函數(shù)而不是scanf_s函數(shù),請(qǐng)?jiān)陧?xiàng)目的屬性中啟用“CrtSecureWarnings”選項(xiàng),該選項(xiàng)將禁用scanf函數(shù)的警告。
方法2(#define _CRT_SECURE_NO_WARNINGS 1)推薦
在文件的最頂端輸入以下代碼
#define _CRT_SECURE_NO_WARNINGS 1
注意一定得是文件最開(kāi)頭的地方 !!!
因?yàn)樵诰幊虝r(shí)常常會(huì)使用到 scanf
函數(shù),為了解決每次編程時(shí)都需要在開(kāi)頭寫(xiě)這條會(huì)很繁瑣
以下是解決方法
在新建.c文件時(shí)自帶 #define _CRT_SECURE_NO_WARNINGS 1
先下載這個(gè)軟件 旁邊是 Everything官網(wǎng)地址
運(yùn)行Everything,在搜索框里查找這個(gè)文件 newc++file.cpp
右擊打開(kāi)路徑
復(fù)制該文件到桌面,用vs2019打開(kāi)進(jìn)行修改
將這段代碼 #define _CRT_SECURE_NO_WARNINGS 1
復(fù)制到文件中
將這個(gè)文件保存到步驟4.的路徑中,替換本來(lái)的文件
這樣就在新建文件時(shí),就有這行代碼啦
總結(jié)
在學(xué)習(xí)C語(yǔ)言的初期,經(jīng)常遇到scanf函數(shù)報(bào)錯(cuò)問(wèn)題,建議使用方法2,方法1的scanf_s是在VS編譯器中有,使用時(shí)如果在其他編譯器運(yùn)行時(shí)可能會(huì)出錯(cuò),所以建議使用方法2,#define _CRT_SECURE_NO_WARNINGS 1
到此這篇關(guān)于VisualStudio2019解決scanf函數(shù)報(bào)錯(cuò)問(wèn)題的文章就介紹到這了,更多相關(guān)VS2019 scanf報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)當(dāng)前時(shí)間動(dòng)態(tài)顯示的方法
這篇文章主要介紹了C++實(shí)現(xiàn)當(dāng)前時(shí)間動(dòng)態(tài)顯示的方法,涉及C++時(shí)間操作及Sleep方法的使用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07QT使用Http協(xié)議通信的實(shí)現(xiàn)示例
使用QT進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),有時(shí)候需要進(jìn)行客戶端和服務(wù)端的網(wǎng)絡(luò)通信,本文主要介紹了QT使用Http協(xié)議通信的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12基于matlab對(duì)比度和結(jié)構(gòu)提取的多模態(tài)解剖圖像融合實(shí)現(xiàn)
這篇文章主要介紹了多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)與融合的概念、方法及意義,最后簡(jiǎn)單介紹了小波變換分析方法。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-11-11如何判斷一個(gè)數(shù)是否為4的冪次方?若是,并判斷出來(lái)是多少次方?
本篇文章是對(duì)如何判斷一個(gè)數(shù)是否為4的冪次方?若是,并判斷出來(lái)是多少次方的實(shí)現(xiàn)方法,進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語(yǔ)言實(shí)現(xiàn)猜數(shù)字的小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)猜數(shù)字的小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之圖的遍歷實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之圖的遍歷實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07C語(yǔ)言實(shí)現(xiàn)賓館管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)賓館管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03