VisualStudio2019解決scanf函數(shù)報錯問題
一、問題由來
在 Visual Studio 2019 編輯代碼時,前期剛剛接觸到VS編譯器時存在的困惑,當用scanf()函數(shù),進行輸入時,在運行的時候編譯器會出現(xiàn)警告報錯。如下圖情況

二、為何會存在這個問題
在Visual Studio 2019中,scanf函數(shù)會被標記為不安全的函數(shù),因為它沒有檢查輸入緩沖區(qū)的大小。如果輸入緩沖區(qū)不夠大,scanf函數(shù)可能會導致緩沖區(qū)溢出,從而引發(fā)安全漏洞。
三、解決方法
方法1(scanf_s)不推薦
為了避免這個問題, VS編譯器中可以使用scanf_s函數(shù)代替scanf。scanf_s函數(shù)具有相同的參數(shù)和行為,但添加了一個額外的參數(shù),用于指定輸入緩沖區(qū)的大小。例如,要讀取一個整數(shù),您可以這樣使用scanf_s函數(shù):
int num;
if (scanf_s("%d", &num) != 1) {
// scanf_s失敗,處理錯誤
}注意:如果您還想使用scanf函數(shù)而不是scanf_s函數(shù),請在項目的屬性中啟用“CrtSecureWarnings”選項,該選項將禁用scanf函數(shù)的警告。
方法2(#define _CRT_SECURE_NO_WARNINGS 1)推薦
在文件的最頂端輸入以下代碼
#define _CRT_SECURE_NO_WARNINGS 1
注意一定得是文件最開頭的地方 !!!

因為在編程時常常會使用到 scanf 函數(shù),為了解決每次編程時都需要在開頭寫這條會很繁瑣
以下是解決方法
在新建.c文件時自帶 #define _CRT_SECURE_NO_WARNINGS 1
先下載這個軟件 旁邊是 Everything官網地址

運行Everything,在搜索框里查找這個文件 newc++file.cpp

右擊打開路徑

復制該文件到桌面,用vs2019打開進行修改

將這段代碼 #define _CRT_SECURE_NO_WARNINGS 1 復制到文件中

將這個文件保存到步驟4.的路徑中,替換本來的文件

這樣就在新建文件時,就有這行代碼啦

總結
在學習C語言的初期,經常遇到scanf函數(shù)報錯問題,建議使用方法2,方法1的scanf_s是在VS編譯器中有,使用時如果在其他編譯器運行時可能會出錯,所以建議使用方法2,#define _CRT_SECURE_NO_WARNINGS 1
到此這篇關于VisualStudio2019解決scanf函數(shù)報錯問題的文章就介紹到這了,更多相關VS2019 scanf報錯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++應用Eigen庫對應實現(xiàn)matlab中部分函數(shù)問題
這篇文章主要介紹了C++應用Eigen庫對應實現(xiàn)matlab中部分函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

