昨天在使用Visual Studio 2019撰寫C語言程式時遇到了scanf回傳值被忽略問題

因為我也是剛開始使用VS2019學習C語言,第一次遇到這種問題,也不知道怎么回事,然后就上Chrome研究了一番,才知道原因,并且找到了幾種分散在個個角落的解決方法,我在這里歸納總結一下,
問題原因:
在ANSI C中只有scanf(),沒有scanf_s(),但是scanf()在讀取時不檢查邊界,所以可能會造成記憶體泄漏,于是Microsoft公司在VS編譯器中提供了scanf_s(),如果想繼續使用scanf這個不安全的函式,可以通過以下方法解決,
方法①:
把scanf改成:scanf_s
這是VS編譯器特有,既然覺得scanf()不安全,那它就自己定義了一個scanf_s(),

方法②:
編譯器錯誤提示的原因至于VS中的SDL檢查,只需要找到它并關閉就可以了,
關閉步驟:右鍵“專案檔案” —— “屬性” —— “配置屬性” ——“C/C++”——“常規”——“SDL檢查”改為“否”即可,如圖所示

改為否后,再次編譯就沒問題了,

方法③:
在C語言程式開頭添加代碼:#pragma warning(disable:4996)
//全部關掉
(或者)
在C語言程式開頭添加代碼:#pragma warning(once:4996)
//僅顯示一個


方法④:
在C語言程式開頭添加代碼:#define _CRT_SECURE_NO_WARNINGS
//忽略安全檢測

每次都要加這么一串代碼的話是不是感覺有點費力??(我一開始找到這種方法的時候第一感覺也是這樣的)
其實不用那么麻煩,我們只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 這個宏就可以了,具體操作如下圖所示:

一次搞定,后面都不用再弄了,我個人偏向于第④種方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253020.html
標籤:其他
