1. 程式人生 > >使用VS2015編譯之前常用的輸入scanf()會出錯

使用VS2015編譯之前常用的輸入scanf()會出錯

如題,之前一直使用vs2010,但是此版本對部分庫函式的使用有所限制,不怎麼好用,如sqrt()裡的引數得是double型。之後又裝了vs2015,但是scanf()在vs2015裡報錯,編譯器提示要用scanf_s代替.百度後發現在使用vs2010以上IDE時,經常會出現報錯說讓scanf換成scanf_s這是一種安全週期檢測,最新的微軟編譯器認為scanf的使用存在安全隱患,因為C/C++中的字串處理都是以\0為截止符的,如果搜尋不到\0,容易出現字串越界所有vc擴充套件的所謂安全標準庫,都添加了一個引數用以指定字串引數的長度,用以避免這種安全隱患。

例如scanf(“%s”,&name,n),整形n為name型別的大小,如果name是陣列,那n就是該陣列的大小

此外還可以通過以下方法來避免: 
1.關閉安全開發檢測 
2.在工程屬性->前處理器中找到前處理器定義新增一行_CRT_SECURE_NO_DEPRECATE 

3.在程式碼開頭加一行#pragma warning(disable:4996)

筆者編寫程式時用的方法三,挺好用的。