99网
您的当前位置:首页atoi和itoa

atoi和itoa

来源:99网
c函数itoa和atoi实现 1、itoa函数实现 #include

void itoa(int i, char *string) {

int power=0,j=0; j=i;

for( power=1;j>10;j/=10) power*=10;

for(;power>0;power/=10) {

*(string+1)='0'+i/power; i%=power; }

*string='\\0';

printf(\"%s\\n\}

void main() {

char string[20]; itoa(12345, string); printf(\"%s\\n\}

#include

void itoa(int i, char *string) {

int power=0,j=0;

j=i;

for( power=1;j>10;j/=10) power*=10;

for(;power>0;power/=10) {

*string++='0'+i/power; i%=power; }

*string='\\0';

printf(\"%s\\n\}

void main()

{

char string[20]; itoa(12345, string); printf(\"%s\\n\}

其中power相当于类似于1234,其power=1000;134,其power=100 *string++='0'+i/power;//获得取得字符的asicii码 i/power取得字符,例如1234/1000=1;234/100=2

2、atoi实现

[cpp] view plaincopyprint? int atoi(char *str) {

if(!str)

return -1;

bool bMinus=false; int result=0;

if(('0'>*str || *str>'9')&&(*str=='+'||*str=='-')) {

if(*str=='-') bMinus=true; *str++; }

while( *str != '\\0') {

if('0'> *str || *str>'9') break; else

result = result*10+(*str++ - '0'); }

if (*str != '\\0')//no-normal end return -2;

return bMinus?-result:result; }

int atoi(char *str) {

if(!str)

return -1; bool bMinus=false; int result=0;

if(('0'>*str || *str>'9')&&(*str=='+'||*str=='-')) {

if(*str=='-') bMinus=true; *str++; }

while( *str != '\\0') {

if('0'> *str || *str>'9') break; else

result = result*10+(*str++ - '0'); }

if (*str != '\\0')//no-normal end return -2;

return bMinus?-result:result; }

重写的atoi函数,没有考虑溢出的情况。

if(('0'>*str || *str>'9')&&(*str=='+'||*str=='-'))//判读第一个字符是否为数字的正负号

if (*str != '\\0')//no-normal end,当上文的while循环不正常退出,应视为字符串不合法,例如“+1234abc”

测试:

[cpp] view plaincopyprint? char *c1 = \"12345\";

char *c2 = \"-12345\"; char *c3 = \"bat-123\"; char *c4 = \"+123abc\";

printf(\"c1=%d\\n\ printf(\"c2=%d\\n\ printf(\"c3=%d\\n\ printf(\"c4=%d\\n\char *c1 = \"12345\";

char *c2 = \"-12345\"; char *c3 = \"bat-123\"; char *c4 = \"+123abc\";

printf(\"c1=%d\\n\ printf(\"c2=%d\\n\

printf(\"c3=%d\\n\ printf(\"c4=%d\\n\

输出结果为: c1=12345 c2=-12345 c3=-2 c4=-2

因篇幅问题不能全部显示,请点此查看更多更全内容