Is there a function in C to check if the input is an int
, long int
, or float
? I know C has an isdigit()
function, and I can create an isnumeric
function as follows:
int isnumeric( char *str )
{
while(*str){
if(!isdigit(*str))
return 0;
str++;
}
return 1;
}
But I was wondering how to create a function that would take a floating point number (as a string) and output a TRUE/FALSE value.
This should do it. It converts the string to floating point using strtod and checks to see if there is any more input after it.
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;
}
To distinguish between float
s and int
s is trickier. A regex is one way to go, but we could just check for floating chars:
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
}
Of course, a more streamlined way to do this is to return the type of the value and the value together.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With