#include <errno.h>
#include <stdlib.h>
#include <string.h>
enum type
{
null_t,
long_t,
double_t
};
int main()
{
char *s = "1.23";
char *end = s+strlen(s);
char *out;
long i=0;
double f=0;
enum type t = null_t;
errno = 0; /* to be safe */
if( ((i = strtol(s,&out,10)) || errno == 0) && out == end )
t = long_t;
else if( ((f = strtod(s,&out)) || errno == 0) && out == end )
t = double_t;
switch(t)
{
case long_t:
printf("long: %d\n",i);
break;
case double_t:
printf("double: %f\n",f);
break;
default:
printf("Fuck you buddy\n");
}
}