圖片示例:
scanf函數不會對函數做一個空間檢測
(沒有做空間越界的判斷)
可能會棧溢出,然後程序崩潰
總之scanf函數不安全
例:
解決方法
1.考慮使用VS提供的scanf_s函數代替scanf
但是隻能在VS下使用,降低了代碼的可移植性,跨平臺性
不考慮使用
2.使用#define _CRT_SECURE_NO_WARNINGS 1
一勞永逸的方法
注意一定是#define(空格) _CRT_SECURE_NO_WARNINGS 1
例:#define _CRT_SECURE_NO_WARNINGS 1
(每次打開文件都會在最頂層出現#define _CRT_SECURE_NO_WARNINGS 1,而且這句話一定要出現在最頂層)
圖像演示
1.打開此電腦
2.找到VS的安裝路徑中的VC
3.用notepad++打開newc++.file
4.在裏面輸入# define _CRT_SECURE_NO_WARNINGS 1
5.CTRL鍵加s鍵保存即可
方法二
缺點每次都要先操作
1.右擊鼠標點擊屬性
2.點擊預處理器,在這句WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)的後面加上 ; _CRT_SECURE_NO_WARNINGS(1一定沒有)點擊確定即可
方法三
缺點每次都要先操作
1.點擊新建項時選擇win32
2.點擊下一步,不要點確定
3.取消紅色圈出的兩項
4.點擊空項目
5.點完成即可成功
此方法只會報警告不會報錯