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 }

浙公网安备 33010602011771号