[转]c语言实现itoa和atoi

原文地址:http://blog.csdn.net/gukesdo/article/details/7472568

#include <iostream>
#include <vector>
using namespace std;

int my_atoi(const char* str){
int res=0;
char sign='+';
const char *pStr=str;

//去空格
while (*pStr==' ')
pStr++;
//判断正负
if(*pStr=='+' || *pStr=='-')
sign=*pStr++;
//计算绝对值
while (*pStr>='0' && *pStr<='9')
{
res=res*10+*pStr-'0';
pStr++;
}

return sign=='-'?-res:res;
}

//最快的字符串倒置方法
void rever(char s[]){
int len=strlen(s);
int i=0;
int j=len-1;
char c;
while (i<j)
{
c=s[i];
s[i]=s[j];
s[j]=c;
i++;
j--;
}
}

void my_itoa(int n, char s[]){
int i=0;
int sign=0;

//判断符号
if((sign=n)<0)
n=-n;

//分解生成逆序字符串
do {
s[i++]=n%10+'0';
} while ((n/=10)>0);
if(sign<0)
s[i++]='-';

//结尾注意添加\0
s[i]='\0';
rever(s);
}


int main()
{
cout << "**************test for my_atoi*********************" << endl;
char *str="123456ad";
printf("%d\n",my_atoi(str));
str=" 123456dd45";
printf("%d\n",my_atoi(str));
str=" -12345dd545";
printf("%d\n",my_atoi(str));

cout << "**************test for my_itoa*********************" << endl;
int n=123;
char str1[]="0000";
my_itoa(n,str1);
printf("%s\n",str1);
n=-456;
my_itoa(n,str1);
printf("%s\n",str1);

return 0;
}


 

posted on 2015-03-10 09:46  sou1boy  阅读(96)  评论(0)    收藏  举报

导航