itoa()和atoi()函数详解
itoa():
将整型值转换为字符串
头文件stdio.h 或 stdlib.h
itoa()函数有3个参数:
第一个参数是要转换的数字,
第二个参数是要写入转换结果的目标字符串,
第三个参数是转移数字时所用 的基数。转换基数为10。10:十进制;2:二进制...
itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。可以跟sprintf相互使用。
C语言实现:
char* itoa(int num,char* str,int radix) {/*索引表*/ char index[]="0123456789ABCDEF"; unsigned unum;/*中间变量*/ int i=0,j,k; /*确定unum的值*/ if(radix==10&&num<0)/*十进制负数*/ { unum=(unsigned)-num; str[i++]='-'; } else unum=(unsigned)num;/*其他情况*/ /*转换*/ do{ str[i++]=index[unum%(unsigned)radix]; unum/=radix; }while(unum); str[i]='\0'; /*逆序*/ if(str[0]=='-') k=1;/*十进制负数*/ else k=0; for(j=k;j<=(i-1)/2;j++) { char temp; temp=str[j]; str[j]=str[i-1+k-j]; str[i-1+k-j]=temp; } return str; }
atoi():
把字符串转换成整型
C语言实现:
int my_atoi(const char *src) { int s = 0; bool isMinus = false; while(*src == ' ') //跳过空白符 { src++; } if(*src == '+' || *src == '-') { if(*src == '-') { isMinus = true; } src++; } else if(*src < '0' || *src > '9') //如果第一位既不是符号也不是数字,直接返回异常值 { s = 2147483647; return s; } while(*src != '\0' && *src >= '0' && *src <= '9') { s = s * 10 + *src - '0'; src++; } return s * (isMinus ? -1 : 1); }