69 lines
1.0 KiB
C
69 lines
1.0 KiB
C
#include <ctype.h>
|
|
#include "string_func.h"
|
|
#include "utility.h"
|
|
|
|
int atoint(const char *a)
|
|
{
|
|
while (isspace(*a))
|
|
a++;
|
|
int sign = 1;
|
|
if (*a == '-')
|
|
sign = -1;
|
|
if (*a == '+' || *a == '-')
|
|
a++;
|
|
int i = 0;
|
|
while (isdigit(*a))
|
|
i = *a++ - '0' + i*10;
|
|
return sign*i;
|
|
}
|
|
|
|
char *inttoa(int i,char *a)
|
|
{
|
|
char *p = a;
|
|
do
|
|
{
|
|
*a++ = i % 10 + '0';
|
|
} while ((i /= 10) > 0);
|
|
*a = '\0';
|
|
return reverse(p);
|
|
}
|
|
|
|
double atofloat(const char *a)
|
|
{
|
|
while (isspace(*a))
|
|
a++;
|
|
int sign = *a == '-' ? -1 : 1;
|
|
if (*a == '+' || *a == '-')
|
|
a++;
|
|
double val = 0.0;
|
|
while (isdigit(*a))
|
|
val = *a++ - '0' + val * 10.0;
|
|
if (*a == '.')
|
|
a++;
|
|
double power = 1.0;
|
|
while (isdigit(*a))
|
|
{
|
|
val = *a++ - '0' + val * 10.0;
|
|
power *= 10.0;
|
|
}
|
|
val = sign*val/power;
|
|
if (*a == 'e' || *a == 'E')
|
|
a++;
|
|
sign = *a == '-' ? -1 : 1;
|
|
if (*a == '+' || *a == '-')
|
|
a++;
|
|
int n = 0;
|
|
while (isdigit(*a))
|
|
n = *a++ - '0' + n * 10;
|
|
if (sign == 1)
|
|
while (n-- > 0)
|
|
val *= 10.0;
|
|
else
|
|
while (n-- > 0)
|
|
val /= 10.0;
|
|
return val;
|
|
}
|
|
|
|
|
|
|