c基础总结

机器大小端判断:

 1 #include <stdio.h>
 2 
 3 typedef union{
 4     char x;
 5     int  i;  
 6 }un;
 7 
 8 int main()
 9 {
10     un tt; 
11     tt.i = 1;
12 
13     if(tt.x == 1)
14     {   
15         printf("little-endian !\n");
16     }   
17     else
18     {   
19         printf("big-endian !\n");
20     }   
21     printf("tt.x = %d\n", tt.x);
22     return 0;
23 }

实现atoi() , itoa()

 1 #include <stdio.h>
 2 
 3 int my_atoi(char *s)
 4 {
 5     int sign = 1, num = 0;
 6     switch(*s)
 7     {
 8         case '-':
 9             sign = -1;
10             s++;
11             break;
12         case '+':
13             s++;
14             break;
15         default:
16             break;
17     }
18 
19     while((*s)!='\0')
20     {
21         num = num*10 + (*s-'0');
22         s++;
23     }
24 
25     return num*sign;
26 }
27 void itoa(int value, char *str)
28 {
29     int i, j;
30     char tmp = 0;
31     if(value<0)
32     {
33         str[0] = '-';
34         value = 0-value;
35     }
36 
37     //在这里已经被逆序了;
38     for(i=1;value>0;i++,value/=10)
39     {
40         str[i] = value%10 + '0';
41     }
42     //数组再逆序一次
43     for(j=i,i=1;i<=j/2;i++)
44     {
45      str[i] = str[i]+str[j-i];
46      str[j-i] = str[i]-str[j-i];
47      str[i] = str[i] - str[j-i];
48         /*
49          tmp = str[i];
50         str[i] = str[j-i];
51         str[j-i] = tmp;
52    */
53 
54      }
55 /*
56     for(j=i-1,i=1; j-i>=1; j--,i++) //将数字字符反序存放
57     {
58         str[i] = str[i]^str[j];
59         str[j] = str[i]^str[j];
60         str[i] = str[i]^str[j];
61     }
62 */
63     if(str[0] != '-') //如果不是负数,则需要把数字字符下标左移一位,即减1
64     {
65         for(i=0; str[i+1]!='\0'; i++)
66             str[i] = str[i+1];
67         str[i] = '\0';
68     }
69 
70 }
71 
72 void main()
73 {
74     int value = -1212345;
75     char str[10] = {'\0'}; //记得把str全填充为'\0'
76 
77     itoa(value, str);
78     printf("The result is:%s\n", str);
79 } 

posted on 2014-07-23 15:23  阳台  阅读(160)  评论(0)    收藏  举报

导航