原文地址: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) 收藏 举报