字符串copy推导演变

 1 #include <stdio.h>
 2 #include<string.h>
 3 /*基本水平*/
 4 void mycopy1(char *des,char * sou)
 5 {
 6     unsigned int i;
 7     for ( i = 0; i < strlen(sou); i++)
 8     {
 9         des[i] = sou[i];
10     }
11     des[i] = '\0';//加上结束符
12 }
13 
14 /*初级水平*/
15 void mycopy2(char *des, char * sou)
16 {
17     while (*sou != '\0')
18     {
19         *des++ = *sou++;
20     }
21     *des = '\0';//同样加上结束符
22 }
23 
24 /*中级水平*/
25 void mycopy3(char *des, char * sou)
26 {
27     while( (*des++ =*sou++)!='\0')
28     {
29         
30     }
31     //*des = '\0';//不再需要这句话
32 }
33 /*高级水平*/
34 void mycopy4(char *des, char * sou)
35 {
36     while (*des++ = *sou++)
37     {
38 
39     }
40     //*des = '\0';//不再需要这句话
41 }
42 /*
43 注意,这里要求sou指针指向的是以'\0'结尾的字符串,如果都是字符数组,则不行,当然你也可以在
44 字符数组尾部加上'\0',让它成为一个判断标志
45 这个主要是锻炼思维,第四中情况,将在《c和指针》上看到应用,后续举例
46 */
47 int main(void)
48 {
49     char str[] = "abcdef";
50     char str1[10];
51 
52     mycopy1(str1,str);
53     printf("str1=%s\n", str1);
54 
55     mycopy2(str1, str);
56     printf("str1=%s\n", str1);
57 
58     mycopy3(str1, str);
59     printf("str1=%s\n", str1);
60 
61     mycopy4(str1, str);
62     printf("str1=%s\n", str1);
63     return 0;
64 }

 

posted @ 2017-03-26 14:52  Crystal_Guang  阅读(221)  评论(0)    收藏  举报