程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> itoa以及atoi C實現

itoa以及atoi C實現

編輯:關於C語言

itoa以及atoi兩個函數實現應該是面試中的常見題,現在先預備寫兩個,以便需要的時候的快速反應

[cpp] //返回0表示出錯  
int atoi(char* str) 

  int len=lstrlenA(str); 
  int ret=0; 
 
  int i=0; 
  if('-'==str[0]||'+'==str[0]) 
  { 
      i=1; 
  } 
  for(;i<len;++i) 
  { 
      if(str[i]<'0'||str[i]>'9') 
      { 
        ret=0; 
        break; 
      } 
      ret=ret*10+(str[i]-'0'); 
  } 
  if('-'==str[0]) 
  { 
      ret=~ret+1; 
  } 
  return ret; 

 
char* itoa(int n,char *str,int radix) 

    static char X[16]={'0','1', 
                       '2','3', 
                       '4','5', 
                       '6','7', 
                       '8','9', 
                       'A','B', 
                       'C','D', 
                       'E','F' 
                      }; 
    int i=0; 
    while(1) 
    { 
      if(radix==16) 
      str[i]=X[n%radix]; 
      else 
      str[i]=n%radix+'0'; 
 
      if((n/=radix)==0) 
      break; 
      ++i; 
    } 
    for(int j=0;j<(i+1)/2;++j) 
    { 
        char c=str[j]; 
        str[j]=str[i-j]; 
        str[i-j]=c; 
    } 
    return str; 

//返回0表示出錯
int atoi(char* str)
{
  int len=lstrlenA(str);
  int ret=0;

  int i=0;
  if('-'==str[0]||'+'==str[0])
  {
      i=1;
  }
  for(;i<len;++i)
  {
      if(str[i]<'0'||str[i]>'9')
      {
        ret=0;
        break;
      }
      ret=ret*10+(str[i]-'0');
  }
  if('-'==str[0])
  {
      ret=~ret+1;
  }
  return ret;
}

char* itoa(int n,char *str,int radix)
{
    static char X[16]={'0','1',
                       '2','3',
                       '4','5',
                       '6','7',
                       '8','9',
                       'A','B',
                       'C','D',
                       'E','F'
                      };
    int i=0;
    while(1)
    {
      if(radix==16)
      str[i]=X[n%radix];
      else
      str[i]=n%radix+'0';

      if((n/=radix)==0)
      break;
      ++i;
    }
    for(int j=0;j<(i+1)/2;++j)
    {
        char c=str[j];
        str[j]=str[i-j];
        str[i-j]=c;
    }
    return str;
}

 


摘自 天道酬勤

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved