C語言實現整數轉字符串

 1 #include <stdio.h>
 2 
 3 void intToString(int N,char arr[]){
 4     //僅支持有符號4字節的int類型,範圍-2147483648 - 2147483647
 5     int i,j,flag;
 6     char stack[10]; //棧,int的最值最多10位
 7     i=0; //計數器
 8     if (N<0){
 9         flag=0; //N是負數
10         N=-N;
11         //把N轉爲正數,注意,若是N是-2147483648,那麼N=-N的結果仍是-2147483648
12         //由於-N表達式將-2147483648轉爲2147483648,而2147483648對於4字節int來講是溢出的,這個溢出的數又變成了-2147483648
13         //這時,程序會計算異常
14         //解決方法,能夠在函數開始時加個if語句,將這個值排除或看成特例
15     }else{
16         flag=1; //N是正數
17     }
18     while (N/10!=0){//說明N還不是一位數,繼續拆
19         stack[i]=(char)(48+N%10); //字符的1 - 數字的1 = 48,N%10獲取N的個位數,並把轉換後的字符入棧
20         N=N/10;
21         i++;
22     }
23     stack[i]=(char)(48+N); //當循環結束,N一定是一個一位數
24     if (flag==0){//若是N是負數,須要在字符串最前面加負號
25         arr[0]='-';
26         for (j=i;j>-1;j--){//將棧中的字符出棧,j=i+1是由於數組arr的0元素已經保存負號了
27             arr[i-j+1]=stack[j];
28         }
29         arr[i+2]='\0'; //添加字符串結束標誌
30     }else{
31         for (j=i;j>-1;j--){//將棧中的字符出棧
32             arr[i-j]=stack[j];
33         }
34         arr[i+1]='\0';
35     }
36 }
37 
38 int main(){
39     char myarr[15];
40     /* 測試 */
41     intToString(15,myarr);
42     printf("%s\n",myarr);
43     intToString(-90,myarr);
44     printf("%s\n",myarr);
45     intToString(2147483647,myarr);
46     printf("%s\n",myarr);
47     intToString(-2147483647,myarr);
48     printf("%s\n",myarr);
49     intToString(0,myarr);
50     printf("%s\n",myarr);
51     return 0;
52 }

運行截圖:數組

相關文章
相關標籤/搜索