Ignore:
Timestamp:
May 28, 2015, 3:34:23 PM (9 years ago)
Author:
laurent
Message:

Try

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_libs/stdlib.c

    r382 r580  
    99
    1010///////////////////////////////////////////////////////////////////////////////////
    11 int atoi(char *str)
     11int atoi(const char *str)
    1212///////////////////////////////////////////////////////////////////////////////////
    1313{
     
    3030    return sign*res;
    3131}
     32
     33///////////////////////////////////////////////////////////////////////////////////
     34double atof(const char *str)
     35///////////////////////////////////////////////////////////////////////////////////
     36{
     37    const char *pstr = str;
     38    double res = 0;
     39    double exp = 0.1;
     40    short sign = 1;
     41    short dec = 0;
     42
     43    while (*pstr != '\0')
     44    {
     45        if (*pstr == '-')
     46        {
     47            if (str != pstr) break;
     48            sign = -1;
     49        }
    3250       
     51        else if (*pstr == '.')
     52        {
     53            if (dec) break;
     54            dec = 1;
     55        }
     56       
     57        else if (*pstr >= '0' && *pstr <= '9')
     58        {
     59            if (dec)
     60            {
     61                res = res + ((*pstr - '0')*exp);
     62                exp = exp / 10;
     63            }
     64            else
     65            {
     66                res = (res * 10) + (*pstr - '0');
     67            }
     68        }
     69       
     70        else
     71        {
     72            break;
     73        }
     74        pstr++;
     75    }
     76    return sign * res;
     77}
     78
    3379////////////////////////////////////////////////////////////////////////////////////////
    3480void * memcpy(void *_dst, const void * _src, unsigned int size)
Note: See TracChangeset for help on using the changeset viewer.