C语⾔实现整数转字符串
1 #include <stdio.h>
2
3void intToString(int N,char arr[]){
4//仅⽀持有符号4字节的int类型,范围-2147483648 - 2147483647
5int i,j,flag;
6char stack[10]; //栈,int的最值最多10位
7 i=0; //计数器
8if (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 }
18while (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必定是⼀个⼀位数
24if (flag==0){//如果N是负数,需要在字符串最前⾯加负号
25 arr[0]='-';
26for (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{
31for (j=i;j>-1;j--){//将栈中的字符出栈
32 arr[i-j]=stack[j];
c 字符串转数组33 }
34 arr[i+1]='\0';
35 }
36 }
37
38int main(){
39char 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);
51return0;
52 }
运⾏截图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论