在項目屬性頁-->配置屬性-->C/C++-->預處理器-->預處理器定義 添加:_CRT_SECURE_NO_DEPRECATE程序員
注意:Debug和Release都要添加安全
微軟解釋說非安全庫函數sprintf、sscanf、strcpy等都是不安全的,應該用sprintf_s、sscanf_s、strcpy_s取代函數
微軟提出了以下10點建議:
1. 不要認爲 strcpy_s 和 strncpy_s( 以及其餘的字符串函數)(在空間不夠的時候)會自動終止拷貝(truncate截斷,不截斷則意味着溢出).若是須要自動截斷,請使用strncpy_s (同時使用_TRUNCATE做爲長度參數)。
2. 記住fopen_s缺省是獨佔模式。如需共享使用文件,應該使用_sopen。
3. 別忘了_dupenv_s, 它將比_getenv_s更容易使用,由於它能自動分配一個正確長度的內存(buffer)。
4. 在scanf_s中當心參數順序。
5. 肯定printf_s中格式字符串的正確。
6. 使用_countof(x)來取代sizeof(x)/sizeof(element). _countof將會正確的計算元素個數,並且若是x是一個指針,編譯器將會發出一個警告(來提醒程序員,僅針對C++編譯)
7. 記住全部的sizes(大小,非長度)都是使用characters(字符,unicode下一個字符佔2個byte)做爲單位,而不是bytes(字節).
8. 記住全部的sizes(大小,非長度,原因同上)包含了字符串結束符'\0'(即別忘了不少狀況下size須要+1)。
9. 調試的時候監視數據0xfd。 (在調試版本下)0xfd將會被填充在數據(buffer,一般是字符串)的結尾處。若是運行非你所願,可能會獲得一個長度錯誤。
10. 檢查全部的錯誤。 許多新函數相比舊函數,能返回(表示)錯誤信息(的數值)。spa