VS中scanf為何會(huì)報(bào)錯(cuò)詳解
發(fā)現(xiàn)問題
簡單來講,scanf會(huì)強(qiáng)行輸入內(nèi)容,所以是不安全的。
我們來看這樣的例子:
#include <iostream> using namespace std; int main() { char demo[3]; scanf("%s", demo); return 0; }
對于以上代碼,當(dāng)我們輸入字符不超過3時(shí),程序可以正常運(yùn)行,但當(dāng)我們輸入字符大于3,scanf仍將所有輸入字符存入數(shù)組,這顯然會(huì)導(dǎo)致數(shù)組的錯(cuò)誤訪問,因此VS認(rèn)為scanf是不安全的。
解決辦法
第一,我們可以使用scanf_s,它是VS提供的,但若使用它將意味著程序只能在VS編譯器運(yùn)行,顯然是不合理的。
第二種方法是在程序開頭加上”#define _CRT_SECURE_NO_WARNINGS 1“
但是如果我們每次打開都需要輸入的話是比較麻煩的。因此,我們可以搜索new++file.cpp文件將該句子加到文件當(dāng)中,以后在創(chuàng)建新的程序時(shí)VS就會(huì)自動(dòng)在開頭加上。
路徑參考:D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems
找到文件后使用記事本打開并輸入”#define _CRT_SECURE_NO_WARNINGS 1“即可,如圖。
總結(jié)
到此這篇關(guān)于VS中scanf為何會(huì)報(bào)錯(cuò)的文章就介紹到這了,更多相關(guān)VS中scanf報(bào)錯(cuò)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析
這篇文章主要介紹了Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析,有助于更加直觀的理解Object-C常用的結(jié)構(gòu)體,需要的朋友可以參考下2014-07-07notepad介紹及插件cmake編譯過程(替代notepad++)
這篇文章主要介紹了notepad介紹及插件cmake編譯過程(替代notepad++),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03C++核心編程之占位參數(shù)和默認(rèn)參數(shù)
這篇文章主要介紹了C++核心編程之占位參數(shù)和默認(rèn)參數(shù),c++中函數(shù)的形參列表中的形參是可以有默認(rèn)值的,函數(shù)的形參列表里可以有占位參數(shù),用來占位,調(diào)用函數(shù)時(shí)必須填補(bǔ)位置。下面更多相關(guān)內(nèi)容的詳細(xì)介紹,需要的小伙伴可以參考一下2022-03-03Win10下最新版CLion(2020.1.3)安裝及環(huán)境配置教程詳解
這篇文章主要介紹了Win10下最新版CLion(2020.1.3)安裝及環(huán)境配置,CLion 是 JetBrains 推出的全新的 C/C++ 跨平臺(tái)集成開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-08-08C++動(dòng)態(tài)分配和撤銷內(nèi)存以及結(jié)構(gòu)體類型作為函數(shù)參數(shù)
這篇文章主要介紹了C++動(dòng)態(tài)分配和撤銷內(nèi)存以及結(jié)構(gòu)體類型作為函數(shù)參數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼
大家好,本篇文章主要講的是C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01