由於scanf有內存溢出的問題,在Visual Studio的C++編譯器已經默認禁用scanf函數,這對許多從VS開始入手C語言的同學來說很不友好。百度的解決方案要么麻煩,要么換一個解決方案就得重新設置,那么有沒有比較簡單的方案又可以跨解決方案使用呢?
有!
在報錯一欄,編譯器會提示C4996號錯誤,讓我們使用#define _CRT_SECURE_NO_WARNINGS
預編譯命令去忽略這個報錯。剛開始使用VS我第一件事是在第一行打這行代碼。后來我靈機一動,既然頭文件里面有這么多預編譯命令,我們不妨將這行代碼加入頭文件中。只要調用與scanf相關的頭文件就會自動忽略報錯。
實現方法:
右鍵VS圖標,點選用管理員權限打開,否則頭文件為只讀無法修改。
隨便點進一個項目
敲入要修改的頭文件
按住Ctrl鍵用鼠標點擊頭文件,鏈接入頭文件的具體定義
將#define _CRT_SECURE_NO_WARNINGS
粘貼入任意一行
Ctrl+S保存頭文件,大功告成!這樣就可以正常用scanf了。
值得注意的是,有時VS更新會把頭文件一起更掉,我在里面放的bits/stdc++.h也被更沒了,每次更新就要重新設置。如果沒問題盡量少或者不要更新VS。更新
如以上方法失效,可以在項目-屬性里面修改 
點開添加_CRT_SECURE_NO_WARNINGS