VS2019中scanf返回值被忽略的問題及其解決方法
昨天在使用Visual Studio 2019編寫C語言程序時遇到了scanf返回值被忽略問題
因為我也是剛開始學習C語言,第一次遇到這種問題,也不知道怎么回事,然后就上Chrome研究了一番,才知道原因,并且找到了幾種分散在個個角落的解決方法,我在這里歸納總結一下。
問題原因:
在ANSI C中只有scanf(),沒有scanf_s(),但是scanf()在讀取時不檢查邊界,所以可能會造成內(nèi)存泄漏。于是Microsoft公司在VS編譯器中提供了scanf_s(),如果想繼續(xù)使用scanf這個不安全的函數(shù),可以通過以下方法解決。
方法①:
把scanf改成:scanf_s
這是VS編譯器特有,既然覺得scanf()不安全,那它就自己定義了一個scanf_s()。
其實我是不推薦大家使用這種方法的,因為scanf_s它是vs編譯器特有的,也就是說它不具有跨平臺性/可移植性,在其他編譯器上無法識別運行
方法②:
編譯器錯誤提示的原因至于VS中的SDL檢查,只需要找到它并關閉就可以了。
關閉步驟:右鍵“項目文件” —— “屬性” —— “配置屬性” ——“C/C++”——“常規(guī)”——“SDL檢查”改為“否”即可,如圖所示
改為否后,再次編譯就沒問題了。
方法③:
在C語言程序開頭添加代碼: #pragma warning(disable:4996)//全部關掉
(或者)
在C語言程序開頭添加代碼: #pragma warning(once:4996)//僅顯示一個
方法④:
在C語言程序開頭添加代碼: #define _CRT_SECURE_NO_WARNINGS//忽略安全檢測
每次都要加這么一串代碼,是不是感覺有點費力??(我一開始找到這種方法的時候第一感覺也是這樣的)
其實不用那么麻煩,這里還可以細分為兩種方法:
(1)我們只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 這個宏就可以了,具體操作如下圖所示:
(2)在VS2019的安裝路徑下找到“newc++file.cpp”這個文件,用記事本的方式打開,并把這行代碼復制粘貼上去,然后保存即可,這樣以后每次新建.c源文件的時候這行代碼就會自動出現(xiàn)在第一行。
【注意】如果在保存的時候出現(xiàn)“拒絕訪問”的情況,可以測試下載安裝一個工具“Notepad++”,然后以管理員的身份運行這個軟件,用這個軟件打開上面提到的“newc++file.cpp”文件,復制粘貼代碼上去后,保存即可。
最后提到的這兩種都是一次搞定,后面都不用再弄了。
我個人偏向于方法④的第(1)種方法。我也比較推薦你使用這種方法——畢竟簡單而且可以說是一勞永逸
到此這篇關于VS2019中scanf返回值被忽略的問題及其解決方法的文章就介紹到這了,更多相關VS2019 scanf返回值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
都2019年了,還問http中GET和POST的區(qū)別
最近看了一些同學的面經(jīng),發(fā)現(xiàn)無論什么技術崗位,還是會問到 get 和 post 的區(qū)別,而搜索出來的答案并不能讓我們裝得一手好逼,那就讓我們從 HTTP 報文的角度來擼一波,從而搞明白他們的區(qū)別2019-02-02支付寶 接口開發(fā)幫助(asp,php,asp.net,jsp)
支付寶的接口開發(fā)使用的技術含量并不高!因為使用的是HTTP普通GET和Post方式傳遞數(shù)據(jù),而這些數(shù)據(jù)是傳給您的程序由您的程序任意處理和支付寶服務器處理,所以重點在再流程和傳參!2009-06-06win10環(huán)境安裝kettle與linux環(huán)境安裝kettle的詳細過程
kettle是一款免費開源的、可視化的、國際上比較流行的、功能強大的ETL必備工具,在ETL這一方面做的還不錯,下面介紹一下基于win10操作系統(tǒng)安裝kettle和linux操作系統(tǒng)安裝kettle的詳細過程,感興趣的朋友跟隨小編一起看看吧2022-11-11最新IntelliJ IDEA 2020.2永久激活碼(親測有效)
今天一大波朋友反饋idea2020激活碼失效的問題,小編快馬加鞭給大家找到解決方案,本文以IDEA 2020.2.4激活碼破解教程為例給大家詳細介紹,需要idea2020激活碼的朋友快來參考下本文吧2020-11-11關于idea+centos7+zookeeper報錯connectionloss,timeout問題
這篇文章主要介紹了idea+centos7+zookeeper報錯connectionloss,timeout問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01分布式醫(yī)療掛號系統(tǒng)整合Gateway網(wǎng)關解決跨域問題
這篇文章主要介紹了分布式醫(yī)療掛號系統(tǒng)整合Gateway網(wǎng)關解決跨域問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04