C 中是否有一个函数可以检查输入是 int
、long int
还是 float
?我知道 C 有一个 isdigit()
函数,我可以创建一个 isnumeric
函数,如下所示:
int isnumeric( char *str )
{
while(*str){
if(!isdigit(*str))
return 0;
str++;
}
return 1;
}
但我想知道如何创建一个接受 float (作为字符串)并输出 TRUE/FALSE 值的函数。
最佳答案
这应该可以做到。它使用 strtod 将字符串转换为 float 并检查它之后是否还有更多输入。
int isfloat (const char *s)
{
char *ep = NULL;
double f = strtod (s, &ep);
if (!ep || *ep)
return false; // has non-floating digits after number, if any
return true;
}
区分 float
和 int
比较棘手。正则表达式是一种方法,但我们可以只检查 float 字符:
int isfloat (const char *s)
{
char *ep = NULL;
long i = strtol (s, &ep);
if (!*ep)
return false; // it's an int
if (*ep == 'e' ||
*ep == 'E' ||
*ep == '.')
return true;
return false; // it not a float, but there's more stuff after it
}
当然,更精简的方法是将值的类型和值一起返回。
关于c - 检查输入字符串是整数还是 float 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997587/