[ create a new paste ] login | about

Link: http://codepad.org/l9GkajTc    [ raw code | output | fork ]

C, pasted on Apr 6:
#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");
	}
}


Output:
1
2
3
double: 1.230000

Exited: ExitFailure 17


Create a new paste based on this one


Comments: