解答VS提示性错误:warning C4996: 'scanf': This function or variable may be unsafe.

5 篇文章 0 订阅
1 篇文章 0 订阅

    我们在利用VS进行C++编写调试的时候,提示错误或警告:警告1 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

    由于VS内部的限制可能会提示你某些字符不安全,例如:printf(),scanf(),stricmp(),strcpy()!其实并不是你代码写错了,也不是C语言语法不正确,只是微软公司对VS进行的特殊限制,当我们利用其它编译器进行改代码的编写都是没有问题的,编译都可以顺利通过。

    这时有可能编译不通过,那么现在经过我查阅资料现在提供链各个解决方案如下:

    1.错误在提示的时候,要求我们定义一个宏:(也就是这句话:To disable deprecation, use _CRT_SECURE_NO_WARNINGS.) 那我们就顺应其要求,定义这个宏:将字符串“_CRT_SECURE_NO_WARNINGS”(不带双引号)拷贝到代码的最上方:

最佳适应法:

F2(50)->F1(100) 

                 

分配

A(30)

后:

F2(20)->F1(100) 

                 

分配

B(70)

后:

F2(20)->F1(30) 

                 

分配

C(50):

分配失败

 

     

(图示省略)

 

 

最差适应法:

F1(100)->F2(50) 

                 

分配

A(30)

后:

F1(70)->F2(50) 

                 

分配

B(70)

后:

F2(50) 

                 

分配

C(50)

无空闲区

 

     

(图示省略)

 然后#deifne _CRT_SECURE_NO_WARNINGS就行了。
<span style="font-size:18px;"><span style="color:#ff0000;">#define _CRT_SECURE_NO_WARNINGS</span>
#include <stdio.h>


int main()
{
	int a = 0;
	char c =' ';
	int b = 0;

	printf("Please input a");
	scanf("%d",a);
	getchar();
	printf("Please input char c");
	scanf("%c",c);
	printf("Please input b");
	scanf("%d",b);
	
	switch (c)
	{
	case '+':
		printf("a+b=%d\n",a+b);
		break;
	case '-':
		printf("a-b=%d\n",a-b);
		break;
	case '*':
		printf("a*b=%d\n",a*b);
		break;
	case '/':
		printf("a/b=%d\n",a/b);
		break;
	default:
		printf("The char c you've input is wrong,please input again!");
	}
}</span>
或者方法2:强制屏蔽掉编号为4996的错误,将这一段代码加入到你的源码中。

代码如下

<span style="font-size:18px;">#include <stdio.h>

<span style="color:#ff0000;">#pragma warning(disable:4996)</span>

int main()
{
	int a = 0;
	char c =' ';
	int b = 0;

	printf("Please input a");
	scanf("%d",a);
	getchar();
	printf("Please input char c");
	scanf("%c",c);
	printf("Please input b");
	scanf("%d",b);
	
	switch (c)
	{
	case '+':
		printf("a+b=%d\n",a+b);
		break;
	case '-':
		printf("a-b=%d\n",a-b);
		break;
	case '*':
		printf("a*b=%d\n",a*b);
		break;
	case '/':
		printf("a/b=%d\n",a/b);
		break;
	default:
		printf("The char c you've input is wrong,please input again!");
	}
}</span>

然后再进行运行就没有上述错误了!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值