Web Toolbar by Wibiya

Pages

Tuesday, February 28, 2012

Implement atoi().

Solution #1: Here is the code,

int my_atoi(char* str)
{
    int len = strlen(str);
    int i;
    int isNegative = 0;
    int num = 0;

    if(str[0] == '-')
    {
        isNegative = 1;
        str++;
    }

    for(i=0; i < len; i++)
    {
        int curr = str[i] - '0';

        //if it is a digit then put it at the units place
        if((curr >=0) && (curr <= 9))
        {
            num = num*10 + curr;
        }
        else //if not a digit then break
            break;
    }

    if(isNegative)
        num = num*-1;

    return num;
}

int main()
{
    printf("%d\n", my_atoi("-123"));
    return 0;
}

2 comments:

Anonymous said...

I think you should use 'continue' in else statement?

Suchit Maindola said...

@anonymous: this behavior is same as the actual atoi() i.e. break when a non-digit is encountered.