[转载]C函数的实现(strcpy,atoi,atof,itoa,reverse)

在笔试面试中经常会遇到让你实现C语言中的一些函数比如strcpy,atoi等

1. atoi

把字符串s转换成数字

 1 int Atoi( char *s )
 2 {
 3     int num = 0, i = 0;
 4     int sign = 1;
 5     
 6     for( i=0; isspace(s[i]); i++ );
 7     
 8     sign = (s[i] == '-')? -1:1;
 9     
10     if( s[i] == '+' || s[i] == '-' )
11         i++;
12     
13     for( ;isdigit(s[i]); i++ )
14     {
15         num = 10*num + (s[i]-'0');
16     }
17     
18     return sign*num;
19 }

2. strcpy(char *src, char *dst)

把src复制到dst中

1 int Strcpy(char* src, char *dst)
2 {
3 //    register char *tmp;
4     int i = 0;
5     while( src[i]!= NULL )
6     {
7         dst[i] = src[i++];
8     }
9 }

3.itoa( int n, char *s )

把数字转化成字符串

 1 void Reverse( char *s )
 2 {
 3     int size = 0;
 4     char tmp;
 5     
 6     while( s[size] != NULL )
 7         size++;
 8     size--;
 9     
10     int i=0;
11     while( i <= size>>1 )
12     {
13         tmp = s[i], s[i] = s[size-i], s[size-i] = tmp;
14         i++;
15     }
16 }
17 
18 void ItoA( int n, char *s )
19 {
20     int sign = 1;
21     
22     if( n < 0 )
23     {
24         sign = -1;        
25         n = -n;
26     }
27     
28     int i=0; 
29     do
30     {
31         s[i++] = n%10 + '0';
32     }    while((n/=10) > 0);
33     
34     if( sign == -1 )
35         s[i++] = '-';
36     s[i] = '