楼主的原意可能是,C语言中的float,double型的内容是否合乎IEEE 754的规范,而不是输入字符串的合法性的校验,因为float不都是itoa,scanf返回的,更可能是数学函数返回的,因为浮点数表示的范围是有ieee 754限制的,而数学函数参数是无限的,所以无论参数输入是否有效的浮点数,数学函数的返回值都可能是无效的,比如对负浮点数开方sqrt(-1);1.0/0.0等表达式,返回的都是无效值。
#include<float.h>
VC可以用的_finite(double x),_isnan(x);来判断
通用的可以自己写:
isnan(double x){return x== x ;}
isfinite(double x);{return (x <= DBL_MAX && x >= -DBL_MAX); }
参考
http://www.jb51.net/article/40566.htm