scanf和scanf_s在VS2013中的使用
在VS2013中,每次使用scanf都會報錯:This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
給了兩種解決辦法,要不就是用scanf_s,要不就用_CRT_SECURE_NO_WARNINGS來處理不報錯,為什么會出現這種原因呢?
scanf()在讀取時不檢查邊界,所以可能會造成內存泄露,所以VS2013提供了scanf_s()來替代,在調用時,必須提供給scanf_s一個數字以表明讀取多少位字符,用法為scanf_s("%c",&letter,sizeof(letter)),否則,即使Ctrl+F7和Ctrl+F5通過了,程序的運行結果也可能與自己所期望大相徑庭的。
如果非要用scanf函數,那么通過以下兩種方式可以禁止警告:
(1)右擊項目——屬性——C/C++——預處理器——預處理器定義中增加_CRT_SECURE_NO_WARNINGS,然后點確定,退出。
(2)在函數最頂頭進行定義:#define _CRT_SECURE_NO_WARNINGS,也可以禁止報錯警告。
給了兩種解決辦法,要不就是用scanf_s,要不就用_CRT_SECURE_NO_WARNINGS來處理不報錯,為什么會出現這種原因呢?
scanf()在讀取時不檢查邊界,所以可能會造成內存泄露,所以VS2013提供了scanf_s()來替代,在調用時,必須提供給scanf_s一個數字以表明讀取多少位字符,用法為scanf_s("%c",&letter,sizeof(letter)),否則,即使Ctrl+F7和Ctrl+F5通過了,程序的運行結果也可能與自己所期望大相徑庭的。
如果非要用scanf函數,那么通過以下兩種方式可以禁止警告:
(1)右擊項目——屬性——C/C++——預處理器——預處理器定義中增加_CRT_SECURE_NO_WARNINGS,然后點確定,退出。
(2)在函數最頂頭進行定義:#define _CRT_SECURE_NO_WARNINGS,也可以禁止報錯警告。