算法16:实现itoa和atoi
2017-03-21 10:16
323 查看
atoi 代码实现
//str:源字符串 //return:返回整数 int atoi(const char* str) { assert(str != NULL); //符号:0为正数,1为负数 int sign = 0; int result = 0; //去掉空格,制表符和换行符 while(*str == ' '|| *str == '\t' || *str == '\n') { ++str; } //判断正负数 if(*str == '-') { sign = 1; ++str; } else if(*str == '+') { ++str; } while(*str >= '0' && *str <= '9') { result = 10*result + *str - '0'; ++str; } if(sign == 1) { result = 0 - result; } return result; }
itoa代码实现
//num: 欲转换的数字 //dst: 转换后的字符串 //radix:转换后的进制数 char* itoa(int num,char* dst,int radix) { //指针指向目标字符串 char* p = dst; //无符号数字 unsigned digval; //调转字符串参数 char* firstDig = dst; //调转字符串临时便令 char temp; if(num < 0) { *p++ = '-'; firstDig++; num = 0 - num; } while(num > 0) { digval = num%radix; num = num/radix; if(digval > 9) { *p++ = (char)(digval - 10 + 'a'); } else { *p++ = (char)digval + '0'; } } *p-- = '\0'; //倒转字符串 while(firstDig < p) { temp = *firstDig; *firstDig = *p; *p = temp; firstDig++; p--; } return dst; }
测试代码
int _tmain(int argc, _TCHAR* argv[]) { char str[10] = "-123434"; int num = atoi(str); cout<<"-123434 num is "<<num<<endl; char dstStr[50] = {0}; cout<<"-123434 radix = 10 :"<<itoa(num,dstStr,10)<<endl; cout<<"-123434 radix = 8 :"<<itoa(num,dstStr,8)<<endl; cout<<"-123434 radix = 16 :"<<itoa(num,dstStr,16)<<endl; cout<<"-123434 radix = 2 :"<<itoa(num,dstStr,2)<<endl; return 0; }
相关文章推荐
- c函数itoa和atoi实现
- 模拟实现memcpy,memmove,atoi,itoa
- atoi和itoa的编程实现
- C函数的实现(strcpy,atoi,atof,itoa,reverse)
- c++实现atoi()和itoa()函数(字符串和整数转化)
- c++实现atoi()和itoa()函数(字符串和整数转化)
- atoi和itoa的实现
- atoi与itoa的C++实现
- atoi 和 itoa的实现
- 实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
- c函数itoa和atoi实现
- itoa与atoi的实现
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- atoi与itoa的实现
- 实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
- atoi() 与 itoa()函数的内部实现
- atoi()和itoa()的标准源码实现
- atoi和itoa的实现
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C/C++_atoi,itoa功能及其实现原理