/*
author Ernesto P. Adorio
UPDEPP (University of the
Philippines, Extension Program
in Pampanga, Clarkfield, Pampanga
email ernesto. adorio@ gmail.com [remove spaces]
version 0.0.1 january 14, 2012
*/
#include
#include
int numbertype(char *s)
{
char *t = s;
while (isspace(*t)) t++;
if (*t == '\0') return 0;
// number sign
printf("ltrimmed [%s]", t);
if (*t == '+' || *t == '-') t++;
if (*t == '\0') return 0;
printf("after sign [%s]", t);
while (isdigit(*t)) t++;
printf("after digits [%s]", t);
if (*t == '\0') return 1; // an integer!
// floating point??
printf ("decimal point? [%s] ", t);
if (*t == '.') t++;
printf ("fractional digits?");
while (isdigit(*t)) t++;
if (*t == '\0') return 2;
// exponent part.
printf ("testing exponent part %s", t);
if (*t == 'e') t++;
printf ("after 'e' ");
if (*t == '\0') return 0; // error!
printf ("sign after e?", t);
if (*t == '+' || *t == '-') t++;
printf("%s", t);
if (*t == '\0') return 0; // error!
while (isdigit(*t)) t++;
if (*t == '\0') return 2; // a floating point number!
return 0; // not an integer or floating point.
}
int main()
{
printf("numtype =[%d]", numbertype("-123.34"));
};
Remove the deubgging printf statements when you use it for applications.
When the program is run, it returns a code of 2 to denote a floating point number, a 1 for an integer, and a 0 if not a number.
No comments:
Post a Comment