atoi 和 itoa

转自:http://www.cnblogs.com/cobbliu/archive/2012/08/25/2656176.html

 

atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:

1, atoi (将字符串转换为数字)

原型: int atoi(const char *nptr);

函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

复制代码
#include <stdio.h>
#include <assert.h>
static int atoi(const char* str) { int result = 0; int sign = 0; assert(str != NULL); // proc whitespace characters while (*str==' ' || *str=='\t' || *str=='\n') ++str; // proc sign character if (*str=='-') { sign = 1; ++str; } else if (*str=='+') { ++str; } // proc numbers while (*str>='0' && *str<='9') { result = result*10 + *str - '0'; ++str; } // return result if (sign==1) return -result; else return result; } 
复制代码

2. itoa (将数字转换成字符串)

char *itoaint value, char *string,int radix);

  原型说明:

  value欲转换的数据。

  string:目标字符串的地址。

  radix:转换后的进制数,可以是10进制、16进制等

复制代码
char *itoa(int val, char *buf, unsigned radix)
{
    char *p; char *firstdig; char temp; unsigned digval; p = buf; if(val <0) { *p++ = '-'; val = (unsigned long)(-(long)val); } firstdig = p; do{ digval = (unsigned)(val % radix); val /= radix; if (digval > 9) *p++ = (char)(digval - 10 + 'a'); else *p++ = (char)(digval + '0'); }while(val > 0); *p-- = '\0 '; do{ temp = *p; *p = *firstdig; *firstdig = temp; --p; ++firstdig; }while(firstdig < p); return buf; }
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值