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