atoi和itoa
atoi
atoi的全称是convert ASCII string to integer
原型: int atoi(const char *nptr);
const char* nptr ; 说明nptr是常量的指针,哪个常量呢,是const char 这个常量,说明这个指针nptr所指向地址的内容是不能改变的,在形参里都是常量指针;指针常量在形参里是没有意义的,指针常量的意思是说这个指针指向的地址不能改变,而我们都知道形参是一个局部变量。这样的限定对函数外部没有任何意义。指针常量的声明方式是char * const nptr;
函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。
实现代码如下:这是我写的,源代码可以自己网上查找
char * myitoa(int n,char *result,int radix){//int 的范围是-2^31...2^31-1,也即-2 147 483 648...2 147 483 647,只要12个的char完全可以表示,最后一个是结束符'\0'if(n==0){result[0]='0';result[1]=0;return result;}char string[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";bool neg=false;int count=0;if(n<0){neg=true;*result++='-';count++;}if(n<0)n=-n;while(n>0){*result++=string[n%radix];n=n/radix;count++;}*result=0;result-=count;if(!neg)//count是char的个数for(int i=0;i<count/2;i++){char temp=result[i];result[i]=result[count-1-i];result[count-1-i]=temp;}elsefor(int i=1;i<count/2+1;i++){char temp=result[i];result[i]=result[count-i];result[count-i]=temp;}return result;}