#include <stdio.h>
// 状态机
int isRealNumber(char *p)
{
int state=1;
int resualt=-1;
while (*p)
{
switch(state)
{
case 1:
if ('+'==*p||'-'==*p)
{
state=2;
}
else if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=3;
}
else
{
state=0;
}
break;
case 2:
if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=3;
}
else
{
state=0;
}
break;
case 3:
if (*p>='0'&&*p<='9')
{
state=5;
}
else
{
state=0;
}
break;
case 4:
if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=5;
}
else
{
state=0;
}
break;
case 5:
if (*p>='0'&&*p<='9')
{
state=5;
}
else
{
state=0;
}
break;
}
if ('0'==state)
{
return -1;
}
p++;
}
if (4==state||5==state)
{
resualt=0;
}
return resualt;
}
int main()
{
char str[255] = "..11111111111119";
printf("\n%d\n",isRealNumber(str));
return 0;
}