首页 > 编程语言 > 详细

C语言-整型转字符型,字符型转整型

时间:2014-02-07 09:53:39      阅读:381      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 #include <limits.h>
  5 
  6 #define MAX_INT_DIGIT 10
  7 
  8 
  9 int * getSizeTable();
 10 char* int2str(const int);
 11 int power(int, int);
 12 int str2int(const char*);
 13 
 14 #define ERROR -1
 15 
 16 
 17 main()
 18 {
 19     int n = 1024;
 20     char* s = int2str(n);
 21     printf(" %d = \"%s\"\n", n , s );
 22 
 23     n = 0 ; 
 24     s = int2str(n);
 25     printf(" %d = \"%s\"\n", n , s );    
 26 
 27     n = 1234567890;
 28     s = int2str(n);
 29     printf(" %d = \"%s\"\n", n , s );
 30 
 31     n = str2int(s);    
 32     printf(" \"%s\" = %d \n", s , n );    
 33 
 34 }
 35 
 36 
 37 int power(int base, int n)
 38 {
 39     int result = ERROR;
 40     int m = 0 ;
 41 
 42     if(base <= 0)
 43     {
 44         return result;
 45     }
 46 
 47     if(n < 0)
 48     {
 49         return result;
 50     }
 51 
 52     result = 1 ;
 53 
 54     for(; m < n; m++)
 55     {
 56         result *= base;
 57     }
 58 
 59     return result;
 60 }
 61 
 62 
 63 /**
 64  * str2int  
 65  */
 66 int str2int(const char* string)
 67 {
 68     int result = 0;
 69 
 70     int size = (int)strlen(string);
 71     int index = 0;
 72     int base = 10;
 73     int convert= 0;
 74     int n = 0;
 75 
 76     /*
 77     printf("%s size = %d\n", string ,size );
 78     */
 79 
 80     for(index = 0 ; index<= size -1 ; index++)
 81     {
 82         int c = string[index];
 83         if(c < 0 || c > 9)
 84         {            
 85             convert  = ERROR;             
 86             break;
 87         }
 88         int n = power(10, size -1 - index);
 89         if(n == ERROR)
 90         {
 91             convert = ERROR;
 92             break;
 93         }
 94 
 95         n = n * (string[index] - 48);
 96 
 97         /*
 98         n = n * (string[index] - ‘0‘);
 99         */
100 
101         convert += n; 
102 
103         /*
104         printf("%c * pow(10, %d) = %d\n", string[index], (size - 1 - index), n );
105         */
106     }
107 
108     result = convert;
109 
110     return result;
111 
112 }
113 
114 
115 char* int2str(const int n)
116 {
117     int absn = abs(n);
118 
119     int digit = getDigit(absn) + 1 ;
120 
121     char *number = (char *) malloc (digit * sizeof(char));
122 
123     int index = 0, difference = 0, realDigit = digit;
124 
125     for(; index < digit ; index++ )
126     {
127         realDigit = realDigit - 1;
128         int iDigit = 0;
129         if(index == 0)
130         {
131             iDigit = (absn/ power(10, realDigit ));    
132             difference = absn % (power(10, realDigit));
133         }
134         else
135         {
136             iDigit = (difference/ power(10, realDigit ));    
137             difference = difference % (power(10, realDigit));
138         }
139          
140         char c  = {iDigit + 0};
141         char cc[2];
142         cc[0] = c;
143         cc[1] = \0;
144         number = strcat(number, cc);
145 
146     }
147 
148     return number;
149 }
150 
151 
152 int * getSizeTable()
153 {
154       int * sizeTable  = sizeTable =  (int *) malloc (MAX_INT_DIGIT * sizeof(int));
155 
156       int index = 0, digit = 10, sum = 0;
157       for( ; index < MAX_INT_DIGIT - 1 ; index++ )
158       {
159           sum += power(digit, index) * 9; 
160           *( sizeTable + index ) = sum;         
161       }
162 
163       *(sizeTable + MAX_INT_DIGIT -1 ) = INT_MAX;
164 
165       return sizeTable;
166 
167 }
168 
169 
170 int getDigit(int nInt)
171 {    
172     int result = 0,min = 0, index = 0 ;
173     int * sizeTable = getSizeTable();
174     for(; index < MAX_INT_DIGIT; index++)
175     {
176         if(nInt <= *(sizeTable + index))
177         {
178             result = index;
179             break;
180         }
181     }
182 
183     return result;
184 
185 }
View Code

 

 运行的结果是:

bubuko.com,布布扣

C语言-整型转字符型,字符型转整型

原文:http://www.cnblogs.com/jie1983/p/3539086.html

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