自定义itoa函数,实现各种进制的自由转换

自己定义写的itoa函数,实现各种进制的转换。下面直接上代码

 
   
代码
    
      
1 #include < iostream >
2   using namespace std;
3   /* 自定义itoa函数 */
4   char * myitoa( int x, char * str, int l);
5   void main()
6 {
7
8 int s = 0 ;
9 char d[ 10 ];
10 cout << " 输入: " ;
11 cin >> s;
12 myitoa(s,d, 10 ); // 十进制
13 cout << " 十进制: " << d << endl;
14 myitoa(s,d, 8 ); // 十进制
15 cout << " 八进制: " << d << endl;
16 myitoa(s,d, 16 ); // 十进制
17 cout << " 十六进制: " << d << endl;
18 }
19
20 char * myitoa( int x, char * ptr, int l)
21 {
22 const char table[] = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ " ; // 有点像字典查询方式
23 bool flag = true ;
24 char * str = ptr;
25 if (x == 0 )
26 {
27 * str ++= ' 0 ' ;
28 * str = ' \0 ' ;
29 return str;
30 }
31 if (x < 0 )
32 {
33 * str ++= ' - ' ;
34 x =- x;
35 flag = false ;
36 }
37 while (x)
38 {
39 * str ++= table[x % l]; // 对应进制
40 x = x / l;
41 }
42 * str = ' \0 ' ;
43 char * start = flag ? ptr:ptr + 1 ;
44 str -- ;
45 /* 反序输出 */
46 while (start < str)
47 {
48 char tmp =* start;
49 * start =* str;
50 * str = tmp;
51 start ++ ;
52 str -- ;
53 }
54
55 return ptr;
56
57 }
58

 

 

首发:http://www.5dkx.com/arch/64.html

 

非特别说明均为原创文章如转载,请注明:转载自 5D开心博客 [ http://www.5DKX.com/ ]

你可能感兴趣的:(自定义)