為什么同樣一串代碼在vc6.0與vc2019里面運行不一樣,一個沒有錯誤沒有警告,可以完美運行,另一個則運行不了scanf輸入哪里出錯了,求大佬告知

uj5u.com熱心網友回復:
這個事因為scanf不安全, 從vs2005就把這個函式用scanf_s替了, 參考下面博文https://www.cnblogs.com/just-like-this/p/11893293.html
uj5u.com熱心網友回復:
在你的原檔案加一句#pragma warning(disable:4996)
uj5u.com熱心網友回復:
因為二者支持的c++的默認標準不一樣的VC6是的是老的標準, VS2019是新的標準
新標準對以前的一些語法和函式做了修正, 還拿老代碼來套就是不對了
解決方案前面都已經告訴你了
uj5u.com熱心網友回復:
scanf會導致緩沖區溢位。類似的所有和字串相關的函式都有安全版本。輸入過多的字符,程式會掛。如果巧妙的安排輸入的內容,可能能夠執行一段惡意腳本或者程式。scanf_s 會給定字串的大小,這樣輸入多了會檢測出來的。uj5u.com熱心網友回復:
懂了懂了,太強了,哈哈哈哈??uj5u.com熱心網友回復:
好??,謝謝呀,嘻嘻uj5u.com熱心網友回復:
謝謝哈,嘻嘻轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137766.html
標籤:C++ 語言
上一篇:為什么編譯的時候沒有錯誤沒有警告,連接的時候就有了,苦惱的小白,求大神指教
下一篇:最小二乘影像匹配
