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);
 }

 

posted @ 2020-05-11 15:58  无乐不作丶  阅读(1672)  评论(0编辑  收藏  举报