C中scanf问题
在VS2003中建一个c程序,用scanf接收输入的时候总会出现下面的警告是怎么回事呢?要怎么写才不会出现警告呢?
e: est1 est1main.c(15) : warning C4996: “scanf”被声明为否决的 d:program filesmicrosoft visual studio 8vcincludestdio.h(295) : 参见“scanf”的声明 消息:“This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
警告是因为scanf”被声明为 "Deprecated", 它是不安全的(有溢出问题).
到"Project - Settings (Precompiler tab)" 加上_CRT_SECURE_NO_DEPRECATE 符号,就取消了"Deprecated"
(另一种办法是) 或者不用 scanf函数 , 而改用 scanf_s函数.
如下面的代码:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
double a,b,c,disc,x1,x2,p,q;
scanf_s("a=%lf,b=%lf,c=%lf",&a,&b,&c);
disc = b*b - 4*a*c;
p = -b /(2*a);
q= sqrt(disc)/(2*a);
x1 = p + q;
x2 = p - q;
printf("
x1 = %5.2lf,x2 = %5.2lf
",x1,x2);
getchar();
return 0;
}