[算法练习]实现itoa,atoi
来源:互联网 发布:网络舆情队伍建设 编辑:程序博客网 时间:2024/06/07 19:26
int my_itoa(int val, char* buf){ char *p2; unsigned int a; //every digit int len; char *p1; //start of the digit char char temp; unsigned int u; if(buf==NULL) { return 0; } p2 = buf; if (val < 0) {if(val == 0x80000000){ char *num = "-2147483648"; for(i=0;i<12;i++) {buf[i] = *num++; } return 11;} *p2++ = '-'; val = 0 - val; } u = (unsigned int)val; p1 = p2; do { a = u % 10; u /= 10; *p2++ = a + '0'; } while (u > 0); len = (int)(p2 - buf); *p2-- = 0; //swap do { temp = *p2; *p2 = *p1; *p1 = temp; --p2; ++p1; } while (p1 < p2); return len;}
#define MAX ((int)0x7FFFFFFF)//整数最大32位都是1#define MIN ((int)0x80000000)//最大+1就是最小int my_atoi(const char * str){ bool negative=false; unsigned long result=0; if(str==NULL) return 0; while(*str==' ') str++; if(*str=='-') { negative=true; str++; } else if(*str=='+') str++; if(*str<'0'||*str>'9') return 0; while(*str>='0' && *str<='9') { result=result*10+*str-'0'; //小于最小值 ||大于最大值 if((negative && result>MAX + 1) || (!negative && result>MAX)) { //溢出检测 return 0; } str++; } //负数处理 if(negative) result *= -1; return (int)result; }
我自己实现的:
int aatoi(const char * str) { if(!str)return 0; __int64 test=+0; char sign=0 ; if( ( str[0]=='-' ?--sign:( str[0]=='+'?++sign:sign++ ) ) ) str++; while('0'<= *str && *str <= '9') { test = test*10 + (*str++ - '0'); if(test*sign> 2147483646) return 2147483647;else if(test*sign< -2147483647) return -2147483648; } return int(test)*sign; }
#define INT_MAX (2147483647)#define INT_MIN (-2147483648)int _atoi(const char *str){if(NULL == str) return 0;unsigned int result = 0;int sign = 1;if(*str == '-' || *str == '+'){if(*str == '-')sign = -1;str++;}while ('0' <= *str && *str <= '9'){unsigned int digit = *str - '0';if((result >INT_MAX / 10) || (sign > 0 ? (result == INT_MAX / 10 && digit > INT_MAX %10):(result == ((unsigned int)INT_MAX + 1) / 10 && digit > (((unsigned int)(INT_MAX + 1) % 10))))){return sign > 0 ? INT_MAX : INT_MIN;}result = result * 10 + digit;str++;}return ((int)result) * sign;}
char* _iota(int num){static char str[MAX_PATH] = {0};int isNeg = num;if(isNeg<0)num = -num;int i = 0;do{str[i++] = num % 10 + '0';num = num / 10;} while (num>0);if(isNeg<0)str[i++] = '-';str[i] = '\0';Reverse(str,_strlen(str));return str;}
void Reverse(char *str,int len){if(NULL == str || len <= 1)return;char strtemp = *str;*str = *(str + len - 1);*(str + len - 1) = strtemp;Reverse(str+1,len-2);}
size_t _strlen(char *str){<span style="white-space:pre"></span>return (NULL == str || *str == '\0') ? 0 : _strlen(str+1) + 1;}
0 0
- [算法练习]实现itoa,atoi
- 算法练习之memmove函数C++实现,atoi,itoa函数实现
- 算法16:实现itoa和atoi
- 算法之atoi && itoa
- atoi及itoa 实现
- atoi,itoa函数实现
- atoi,itoa实现
- atoi() itoa() 的实现
- itoa atoi 实现
- atoi以及itoa实现
- atoi 和itoa实现
- atoi 和 itoa实现
- atoi itoa 高效实现
- atoi()/itoa()/memcpy()实现
- itoa(),atoi()实现
- 模拟实现atoi、itoa
- 实现itoa()和atoi()
- atoi和itoa的实现
- 跨站脚本攻击(XSS)——常见网站攻击手段原理与防御
- js 对象动态属性
- 理解Cookie和Session机制
- pcl里面的RoPs特征(Rotational Projection Statistics)
- jQuery on()方法
- [算法练习]实现itoa,atoi
- NYOJ Cut the rope
- 写博客,从现在开始
- UI调试神器 for ios:Reveal的使用与破解
- jqGrid 学习笔记整理——进阶篇(二)
- js 声明变量
- WebViewJavascriptBridge详细使用
- Swift高阶函数map,filter,reduce实践
- 首试GPU并行运算