C中scanf问题
C中scanf问题
在VS2003中建一个c程序,用scanf接收输入的时候总会出现下面的警告是怎么回事呢?要怎么写才不会出现警告呢?
e:\test1\test1\main.c(15) : warning C4996: “scanf”被声明为否决的 d:\program files\microsoft visual studio 8\vc\include\stdio.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("\nx1 = %5.2lf,x2 = %5.2lf\n",x1,x2); getchar(); return 0; }