strcmp,strcpy,strcat,strncmp,strncpy,strncat,自实现精炼版本

1strcmp and strncmp

 1 #include <stdio.h>
 2 #include <string.h>
 3 /*
 4 strcmp and strncmp 自实现
 5 */
 6 int mystrcmp(const char *str,const char *str1)
 7 {
 8     for(;*str&&*str1&&*str == *str1;str++,str1++);
 9         return *str - *str1;
10 }
11 int mystrncmp(const char *strn,const char *strn1,int n)//2个字符串前n个字符作为子串,然后比较这2个子串的大小
12 {                                
13     for(;*strn&&*strn1&&*strn == *strn1&& --n;strn++,strn1++);
14         return *strn - *strn1;
15 }
16 int main(void)
17 {
18     //strcmp自实现
19     char *str = "12345688";
20     char *str1 = "1234567";
21     int val = mystrcmp(str,str1);
22     if(0 == val)
23         printf("str == str1\n");
24     else if(val > 0)
25         printf("str>str1\n");
26     else
27         printf("str<str1\n");
28     //strncmp自实现
29     char *strn = "131";
30     char *strn1 = "121";
31     int val1 = mystrncmp(strn,strn1,3);
32     if(0 == val1)
33         printf("str == str1\n");
34     else if(val1 > 0)
35         printf("str>str1\n");
36     else
37         printf("str<str1\n");
38 
39     return 0;
40 }

2.strcpy and strncpy 自实现精炼版本

 1 #include <stdio.h>
 2 #include <string.h>
 3 /*
 4 strcpy and strncpy 自实现
 5 */
 6 char * mystrcpy(char *str,const char *str1)
 7 {
 8     char *p = str;
 9     while(*str++ = *str1++);
10 
11     return p;
12 }
13 char *mystrncpy(char *strn,const char *strn1,int n)
14 {
15     char *pp = strn;
16     while(n--)
17     {
18         *strn++ = *strn1++;
19     }
20     return pp;
21 }
22 int main(void)
23 {
24     //strcpy自实现
25     char str[10];
26     char *str1 = "123456";
27     char * p =mystrcpy(str,str1);
28     printf("%s\n",str);
29 
30     //strncpy自实现
31     char strn[10];
32     char *strn1 = "123456";
33     char *pp = mystrncpy(strn,strn1,10);
34 
35     printf("%s\n",strn);
36 
37     return 0;
38 }

3.strcat and strncat 自实现精炼版本

 1 #include <stdio.h>
 2 #include <string.h>
 3 /*
 4 strcat and strncat 自实现
 5 */
 6 char * mystrcat(char *str,const char *str1)
 7 {
 8     char *p = str;
 9     while(*str)str++;
10     while(*str++ = *str1++);
11     return p;
12 }
13 char *mystrncat(char *strn,const char *strn1,int n)
14 {
15     char *p = strn;
16     while(*strn)strn++;
17     while(n--)    
18         *strn++ = *strn1++;    
19     return p;
20 }
21 int main(void)
22 {
23     //strcat 自实现
24     char str[20] = "12345";
25     char *str1 = "678910";
26     char *p = mystrcat(str,str1);
27     printf("%s\n",str);
28     //strncat自实现
29     char strn[20] = "12345";
30     char *strn1 = "678910";
31     char *pp = mystrncat(strn,strn1,4);
32     printf("%s\n",strn);
33 
34     return 0;
35 }

 

posted on 2018-11-26 22:02  王朝马汉  阅读(181)  评论(0编辑  收藏  举报

导航