用c语言实现计算n的阶乘,如何解决VS2017的scanf函数报错问题

VS2017
C代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 

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");
}

上面这一段代码不输入第一行时,就会出现下图所示的结果:
用c语言实现计算n的阶乘,如何解决VS2017的scanf函数报错问题_第1张图片
我们查看一下细节:
用c语言实现计算n的阶乘,如何解决VS2017的scanf函数报错问题_第2张图片
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 ->确定

搞定咯~

看,没有了上面展示的第一行代码,程序也成功运行出来啦~
用c语言实现计算n的阶乘,如何解决VS2017的scanf函数报错问题_第3张图片

你可能感兴趣的:(用c语言实现计算n的阶乘,如何解决VS2017的scanf函数报错问题)