VS2019提示scanf不安全問題

2022-05-14 23:24:19 字數 1664 閱讀 6385

我們現在學的就是使用scanf()語句進行輸入,但是vs2019中卻報錯顯示不安全

首先我先來說一下scanf和scanf-s的區別

scanf()函式是標準c中提供的標準輸入函式,用以使用者輸入資料

scanf_s()函式是microsoft公司vs開發工具提供的乙個功能相同的安全標準輸入函式,從vc++2005開始,vs系統提供了scanf_s()。在呼叫該函式時,必須提供乙個數字以表明最多讀取多少位字元。

scanf()在讀取資料時不檢查邊界,所以可能會造成記憶體訪問越界

//例如:分配了5位元組的空間但是使用者輸入了10位元組,就會導致scanf()讀到10個位元組

char buf[5]=;

scanf("%s", buf);

//如果輸入1234567890,則5以後的部分會被寫到別的變數所在的空間上去,從而可能會導致程式執行異常。

以上**如果用scanf_s()則可避免此問題:

char buf[5]=;

scanf_s("%s",buf,5); //最多讀取4個字元,因為buf[4]要放'\0'

//如果輸入1234567890,則buf只會接受前4個字元

在使用vs2019時記住每次寫scanf時全都寫成scanf-s

第一步:建立空專案

選擇建立新專案

選擇空專案進行建立

2.建立原始檔

右擊

新增c++檔案

3.更改屬性

右擊源.cpp

選擇屬性

此時常規中的sdl選項現實的是「是 (/sdl)」

將此處改為「否 (/sdl-)」並確認即可

此時雖然仍然會有警告出現,但是已經不影響程式的除錯執行了,但是這個方法的缺點就是每一次建立新的c++檔案的時候都要改一次屬性,比較麻煩。

在最上面加上巨集:

#define _crt_secure_no_warnings 1
解除scanf的不安全問題;

vs2019智慧型提示設定為中文

於 2.找到資料夾 你需要哪個版本的.netcore需要顯示中文提示,就選擇哪個版本,我此次選擇的是.netcore 3.1版本的。這3個資料夾分別對應不同的框架,第乙個是.netcore框架的語言包,我只需要裝.netcore的語言包,所以選擇第乙個就行 4.將裡面的zh hans資料夾貼上到第二...

vs2019如何顯示行數 VS2019 技巧

ps 本文所有示例演示均基於 vs 2019 v16.6.3 版本。1.擴充套件 縮小選區 通過雙擊選中整個單詞,這個操作大家應該都知道。但如何快速選擇幾個單詞 或多個單詞的字串 或 塊呢?教大家乙個快捷鍵,如何快速擴充套件選擇 區域。例如,當游標在乙個字串中時,使用下面的快捷鍵就可以選擇整個字串。...

VS2019開發Qt5 14 2,智慧型提示

2 開啟vs2019,擴充套件 管理擴充套件,搜尋qt,安裝下圖外掛程式。關閉vs2019自動安裝。3 開啟vs2019,擴充套件 qt vs tools qt options 之後就可以用vs新建qt gui專案了,智慧型提示 如果vs不彈出智慧型提示,再進行如下操作。vs2017不彈出,vs20...