2019.1.21王允

  1/*
  2 man 3 strlen strcpy strcmp strcat 查看功能是什么,并自定义函数,与之功能一至
  3 */
  4
  5 #include<stdio.h>
  6
  7
  8 int strlen_1(const char *p);
  9 char *strcpy(char *p,const char *q);
 10 int strcmp(const char *num1,const char *num2);
 11 char *strcat(char *p,const char *q);
 12
 13 int main(void)
 14 {
 15     char a[] = "hello";
 16     char b[] = "world!";
 17     int len_a,len_b,cmp;
 18     char *cpy, *cat;
 19
 20     len_a=strlen_1(a);
 21     len_b=strlen_1(b);
 22     printf("a的长度为%d b的长度为%d\n",len_a,len_b);
 23
 24     cmp=strcmp(a,b);
 25     printf("%d\n",cmp);
 26
 27     cpy=strcpy(a,b);

 28     printf("%s\n",cpy);
 29
 30     cat=strcat(a,b);
 31     printf("%s\n",cat);//上面a[]已经被b[]覆盖,此处为worldworld
 32
 33     return 0;
 34 }
 35
 36 //返回字符串中的字节数。
 37 int strlen_1(const char *p)
 38 {
 39     int i=0;
 40     while(*p++)
 41     {
 42         i++;
 43     }
 44     return i+1;
 45 }
 46
 47
 48 // 把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*
 49 char * strcpy(char *p,const char *q)
 50 {
 51     int i=0;
 52     while(q[i])
 53     {
 54         p[i]=q[i];

 55         i++;
 56     }
 57     p[i]='\0';
 58     return p;
 59 }
 60
 61 //若s1、s2字符串相等,则返回零;若s1大于s2,则返回大于零的数;否则,则返回小于零的数。
 62 int strcmp(const char *num1,const char *num2)
 63 {
 64     int i=0;
 65     while(num1[i] == num2[i])
 66     {
 67         if(!num1[i])
 68         {
 69             return 0;
 70         }
 71         i++;
 72     }
 73     return num1[i]-num2[i];
 74 }
 75
 76 //strcat()会将参数src字符串拷贝到参数dest所指的字符串尾
 77 char *strcat(char *p,const char *q)
 78 {
 79     int i=0;
 80     while(p[i])
 81     {
 82         i++;
 83     }
 84     strcpy(p+i,q);
 85     return p;
 86 }

 

posted @ 2019-01-21 20:35  yunge123  阅读(74)  评论(0)    收藏  举报