c語言字串與整數之間的轉換

來源:互聯網
上載者:User

在c語言中,我們經常面臨需要將字串轉換為整型,以及將整型轉化為字串的問題。

將字串轉換為整數的函數在stdlib.h中定義:

int atoi(const char *str);

atoi函數會跳過str中前面出現的空格,從第一個數字開始轉換。下面是我的實現:

int my_atoi(const char *str){//argument check first!assert(NULL != str);int ret=0,sign=1;//skip tab and spacefor(; *str==' '||*str=='\t'; str++);if(*str == '-')sign = -1;if(*str == '-' || *str == '+')str++;while(isdigit(*str)){ret = ret*10 + *str - '0';str++;}return sign*ret;}

要注意的幾點:

1.參數檢驗。始終要放在最開始,在輸入是指標的情況下,永遠不要忘記首先檢驗是否是NULL指標;

2.字串開始處的空格(我還加入了定位字元)要注意跳過;

3.符號,不要忘了數字字串第一個字元可能出現加號和減號!

對於將數字轉換為字串,c標準中並沒有定義(itoa只是在一些編譯器中自己定義)。c標準中沒有定義的原因我覺得是數字轉成字串可以使用sprintf格式化輸出函數來完成。當然我們可以自己編寫一個itoa函數。這裡的參數原型參照的是vc中定義的itoa:

#define ABS(cond) (cond>0?cond:-cond)char   *my_itoa(int   value,   char   *string,   int   radix){    assert(string!=NULL);    char tmp[32]={'\0'};    int tmpval=ABS(value);    int i,j;    for(i=0;i<32;i++)    {   tmp[i]=(tmpval%radix)+'0';  tmpval=tmpval/radix;  if(tmpval==0)   break;  }     if(value<0)tmp[++i]='-';     for(j=0;i>=0;i--)  string[j++]=tmp[i];     string[j]='\0';     return string;}

當然,一般情況下我們使用sprintf就可以完成任務啦:

char num[32];

sprintf(num,"%d",12345);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.