myItoa

#include <iostream>
#include <vector>
#include <string.h>

using namespace  std;

int isSpace(char x)
{
    if(x == ' ' or x == '\t' or x == '\n')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int isDigit(char x)
{
    if(x >= '0' and x <= '9')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
 
int myItoa(const char* nptr)
{
    if(nptr == nullptr)
    {
        cout <<"input is nullptr,return";
        return -1;
    }
    int result;
    int c;
    int sign;
    int maxInt = 0xffffffff;
    int minInt = -0xffffffff + 1;

    while(isSpace((int)(unsigned char)*nptr))
    {
        nptr++;
    }

    c = (int)(unsigned char)*nptr;
    sign = c;
    if(sign == '+' or sign == '-')
    {
        c = (int)(unsigned char)*nptr++;
    }

    result = 0;
    while(isDigit(c))
    {
        result = 10 *result + (c - '0');
        c = (int)(unsigned char)*nptr++;//*(nptr++)
    }

    if(result >= maxInt or result <= minInt)
    {
        cout <<"value is out boundary,return";
        return -1;
    }

    if(sign == '-')
    {
        return -result;
    }
    else
    {
        return result;
    }
} 
int main()
{   
    char *p = "0123+%";
    char *null = nullptr;
    //cout <<*p++<<endl;
    char *p2 = "99999999999999999999999999999999999999999999999999";
    cout << atoi(null) << endl;
    cout << atoi(p) << endl;
    cout << atoi(p2) << endl;

   int val;
   char str[20];
   
   strcpy(str, "98993489");
   val = atoi(str);
   printf("src = %s, dest = %d\n", str, val);

    getchar();
    return 0;
}
View Code

 

posted @ 2021-10-25 21:29  Kiris  阅读(14)  评论(0编辑  收藏  举报