我创建了一个小应用程序,通过使用带参数的用户定义函数来查找最大数量。当我运行它时,它会显示此消息
错误1错误C4996:' scanf':此功能或变量可能不安全。 请考虑使用scanf_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。
我该怎么做才能解决这个问题?
这是我的代码
#include<stdio.h>
void findtwonumber(void);
void findthreenumber(void);
int main() {
int n;
printf("Fine Maximum of two number\n");
printf("Fine Maximum of three number\n");
printf("Choose one:");
scanf("%d", &n);
if (n == 1)
{
findtwonumber();
}
else if (n == 2)
{
findthreenumber();
}
return 0;
}
void findtwonumber(void)
{
int a, b, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
if (a>b)
max = a;
else
max = b;
printf("The max is=%d", max);
}
void findthreenumber(void)
{
int a, b, c, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
printf("Enter c:");
scanf("%d", &c);
if (a>b)
max = a;
else if (b>c)
max = b;
else if (c>a)
max = c;
printf("The max is=%d", max);
}
答案 0 :(得分:12)
听起来它只是一个编译器警告。
scanf_s
的使用可防止可能的缓冲区溢出
请参阅:http://code.wikia.com/wiki/Scanf_s
关于为什么scanf
可能有危险的好解释:Disadvantages of scanf
正如建议的那样,您可以尝试用scanf
替换scanf_s
或禁用编译器警告。
答案 1 :(得分:8)
另一种抑制错误的方法:在C / C ++文件的顶部添加此行:
#define _CRT_SECURE_NO_WARNINGS
答案 2 :(得分:0)
答案 3 :(得分:0)
另一种方法是,当您创建新项目时,不要点击安全开发生命周期 (SDL) 检查:
或者如果您在一个项目中:
右键单击您的 project->Properties->Configuration Properties->C/C++ ->All Options>
滚动鼠标并找到 SDL checks
,将其编辑为 NO(/sdl-)
,然后应用,确定