首页 > 编程语言 > 详细

C语言实现整数转字符串

时间:2020-02-08 11:27:38      阅读:53      评论:0      收藏:0      [点我收藏+]
 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 }

运行截图:

技术分享图片

 

C语言实现整数转字符串

原文:https://www.cnblogs.com/ryzz/p/12275236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!