VS2017
C代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main () {
int n;
printf("请输入n:");
scanf("%d", &n); //利用scanf函数
int b = 1;
for (int a = 1; a <= n; a++)
b *= a; //b *= a是b = b*a 的简写
printf("n的阶乘= %d\n",b);
system("pause");
}
上面这一段代码不输入第一行时,就会出现下图所示的结果:
我们查看一下细节:
VS建议
1.使用scanf_s 函数代替;
2.To disable deprecation, use _CRT_SECURE_NO_WARNINGS
以上两种不推荐使用第一种方法,
第一,scanf_s 函数用法跟scanf 函数用法不一样
第二,其他版本的的开发工具中没有scanf_s 函数
解决方法:
- 方法一、(系统推荐2.)在头文件之前添加一行代码,该宏必须放在文件的最上方,如果放在其他位置可能会不生效。(如下)
#define _CRT_SECURE_NO_WARNINGS
注意使用该方法时,_CRT_SECURE_NO_WARNINGS不要一个一个敲,复制粘贴!(复制粘贴一定要在“输出”窗口复制,“错误列表”窗口不能选中复制)不然敲错就很尴尬,当然,你说你能敲对?那敲吧,我也拦不住你~
- 方法二、还是在头文件之前添加一行代码(如下)
#pragma warning (distable:4996)
- 方法三、这是一个一劳永逸的方法。
通过如下设置,避免我们每次写代码都要添加一行代码:
打开VS->项目->属性-> C/C++ -> 预处理器 -> 预处理器定义 ->编辑 -> 加入_CRT_SECURE_NO_WARNINGS ->确定
搞定咯~
看,没有了上面展示的第一行代码,程序也成功运行出来啦~