scanf()在vs2013裡報錯,編譯器提示要用scanf_s代替;
scanf_s()引數與scanf()不同;
例如scanf(「%s」,&name,n),整形n為name型別的大小,如果name是陣列,那n就是該陣列的大小。
#include#includestruct student
;int main()
輸出結果:
請輸入姓名:zhu 請輸入性別:nv 請輸入年齡:1 請輸入城市:beijing 請輸入年級:1 姓名:zhu 性別:nv 年齡:1 城市:beijing 年級:1 請按任意鍵繼續. . .
否則程式執行,輸入資料之後就會停止執行。
scanf函式與scanf s函式
ansi c中沒有scanf s 只有scanf scanf 在讀取時不檢查邊界,所以可能會造成記憶體洩露。所以vc 2005 2008中提供了scanf s 在最新的vs2013中也提供了scanf s 在呼叫時,必須提供乙個數字以表明最多讀取多少位字元。目前最新的c11標準中已經將scanf s...
關於scanf s的學習
最近在學習中發現了乙個據說較scanf更安全的函式 scanf s。scanf在讀取時不檢查邊界,所以可能造成記憶體訪問越界,舉例說明 char buf 16 scanf s buf 當輸入了16個以上的字元時,多接收的字元會被寫入其他記憶體空間中,從而產生問題。而使用scanf s後,這種問題可以...
Visual Studio中scanf s的使用
1.scanf在vs裡面已經棄用了,因為其對讀取輸入的空間沒有約束,容易造成記憶體越界的問題,建議使用scanf s代替。2.scanf s在讀取字串或字元輸入時需要在引數列表中新增長度約束,如 scanf s s stra,100 來限制其對記憶體的訪問 3.scanf s與scanf有同樣的輸入...