| itoa以及atoi两个函数实现应该是面试中的常见题,现在先预备写两个,以便需要的时候的快速反应 [cpp] //返回0表示出错 int atoi(char* str) { int len=lstrlenA(str); int ret=0;
int i=0; if('-'==str[0]||'+'==str[0]) { i=1; } for(;i<len;++i) { if(str<'0'||str>'9') { ret=0; break; } ret=ret*10+(str-'0'); } if('-'==str[0]) { ret=~ret+1; } return ret; }
char* itoa(int n,char *str,int radix) { static char X[16]={'0','1', '2','3', '4','5', '6','7', '8','9', 'A','B', 'C','D', 'E','F' }; int i=0; while(1) { if(radix==16) str=X[n%radix]; else str=n%radix+'0';
if((n/=radix)==0) break; ++i; } for(int j=0;j<(i+1)/2;++j) { char c=str[j]; str[j]=str[i-j]; str[i-j]=c; } return str; } //返回0表示出错 int atoi(char* str) { int len=lstrlenA(str); int ret=0; int i=0; if('-'==str[0]||'+'==str[0]) { i=1; } for(;i<len;++i) { if(str<'0'||str>'9') { ret=0; break; } ret=ret*10+(str-'0'); } if('-'==str[0]) { ret=~ret+1; } return ret; } char* itoa(int n,char *str,int radix) { static char X[16]={'0','1', '2','3', '4','5', '6','7', '8','9', 'A','B', 'C','D', 'E','F' }; int i=0; while(1) { if(radix==16) str=X[n%radix]; else str=n%radix+'0'; if((n/=radix)==0) break; ++i; } for(int j=0;j<(i+1)/2;++j) { char c=str[j]; str[j]=str[i-j]; str[i-j]=c; } return str; }
摘自 天道酬勤
| |