VS中scanf函數(shù)報(bào)錯問題的幾種解決方法
引言:
相信很多小伙伴在第一次使用scanf函數(shù)時大概率會遇到系統(tǒng)報(bào)錯的問題(如下圖所示)。翻譯過來就是:“scanf這個函數(shù)或者變量可能不安全 ,考慮使用scanf_s替換,如果想讓報(bào)錯失效的話,請使用 _CRT_SECURE_NO_WARNINGS”。但這個報(bào)錯只針對VS編譯器,因?yàn)閂S比較嚴(yán)謹(jǐn),其它編譯器不會出現(xiàn)這種情況。

那么這個時候我們該怎么辦呢?接下來我就將解決這個問題的幾種方法一一列舉出來,有需求的小伙伴可以參考一下。
方法一:
根據(jù)報(bào)錯提示將scanf函數(shù)替換成scanf_s即可。但是因?yàn)閟canf_s這個函數(shù)是VS提供的,其它編譯器沒有。所以說,如果你在代碼中使用了scanf_s函數(shù),代碼就不跨平臺了(即沒有了可移植性),所以并不推薦大家使用這種方法。
方法二:
在使用scanf函數(shù)的.c文件的第一行加入 #define _CRT_SECURE_NO_WARNINGS
正確示范:

錯誤示范:

注意:1.define與_CRT_SECURE_NO_WARNINGS之間要有空格,不然依舊會出錯。
2.添加的這行代碼一定要放在.c文件的第一行,一定要放在.c文件的第一行,一定要放在.c文件的第一行(重要的事情說三遍)。
缺陷:使用這種方法,每個.c源文件都需要手動添加,比較麻煩。
方法三:
讓某一個警告或者錯誤失效,我們可以看到這個.c文件錯誤碼的編號叫4996。

可以在程序的開頭加入這樣一行代碼? #pragma warning(disable:4996) ,這樣系統(tǒng)就不會再有報(bào)錯信息啦!

注: 這種方法只適用于這個工程,只針對這個錯誤碼來解決報(bào)錯,不夠一勞永逸。
方法四:(?強(qiáng)烈推薦這種方法,絕對的一勞永逸)
在VS中有一個文件? newc++file.cpp,找到這個文件,在這個文件中加入 #define _CRT_SECURE_NO_WARNINGS,以后新建的.c文件中自動就會有這一行代碼。
具體步驟如下:
1.打開文件資源管理器,找到你的VS安裝路徑,里面有個 newc++file.cpp文件

2.將 newc++file.cpp文件拷貝(Ctrl+c)一份,復(fù)制(Ctrl+v)到桌面

3.在桌面上將文件用記事本打開

4.將 #define _CRT_SECURE_NO_WARNINGS輸入到記事本后保存退出

5.將改完后的文件拷貝到原來的位置,替換掉以前的文件,下次再創(chuàng)建新的源文件時就會自動寫入#define _CRT_SECURE_NO_WARNINGS

到此這篇關(guān)于VS中scanf函數(shù)報(bào)錯問題的幾種解決方法的文章就介紹到這了,更多相關(guān)VS scanf函數(shù)報(bào)錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
圖解C++的STL之stack和queue,輕松理解數(shù)據(jù)結(jié)構(gòu)
聚焦?C++?的?STL?中的?stack?和?queue,讓數(shù)據(jù)結(jié)構(gòu)變得簡單有趣!?通過圖解的方式,我們將輕松理解這兩個重要的數(shù)據(jù)結(jié)構(gòu),準(zhǔn)備好開啟?STL?學(xué)習(xí)之旅了嗎?讓我們一起探索?stack?和?queue?的奧秘吧!2024-03-03
C++中拷貝構(gòu)造函數(shù)的應(yīng)用詳解
這篇文章主要介紹了C++中拷貝構(gòu)造函數(shù)的應(yīng)用,需要的朋友可以參考下2014-07-07
C++實(shí)現(xiàn)基數(shù)排序的方法詳解
本篇文章是對使用C++實(shí)現(xiàn)基數(shù)排序的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

