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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM