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; }