1 #include <stdio.h>
2 /*
3 题目:4种字符串库函数自实现:1.mystrlen()测字符串长度 2.mystrcat()字符串链接 3.mystrcpy()字符串拷贝 4.mystrcmp()字符串比较
4 思路:1.mystrlen()测字符串长度。测量字符串的实际长度返回一个整数值
5 2.mystrcat()字符串链接。将第二个字符串链接到第一个字符串后面,组成一个新串,返回新串的首地址(也可不返回)。
6 3.mystrcpy()字符串拷贝。将第二个字符串拷贝至第一个字符串中。前提是第一个字符串的长度大于第二个字符串的长度,返回新串的首地址(也可不返回)
7 4.mystrcmp()字符串比较。两个字符串每个字符逐个比较,全部相同返回他们的差值,此时差值正好为0
8 如果第一个字符串某一个字符比第二个字符串ascii大或者小 则返回他们的差值。大的时候差值>0 小的时候差值<0
9 */
10
11 //1.测字符串长度
12 int mystrlen(char *p)
13 {
14 int len = 0;
15 while(*p++)
16 len++;
17 return len;
18 }
19 //2.字符串链接
20 void mystrcat(char *p1,char *p)
21 {
22 while(*p1)p1++;
23 while(*p1++=*p++);
24 }
25
26 //3.字符串拷贝
27 void mystrcpy(char *p1,char *p)
28 {
29 while(*p1++=*p++);
30 }
31
32 //4.字符串比较
33 int mystrcmp(char *p1,char *p)
34 {
35 for(;*p1&&*p;p1++,p++)
36 {
37 if(*p1 == *p)
38 continue;
39 else
40 return *p1-*p;
41 }
42 return *p1-*p;
43 }
44 int main(void)
45 {
46 char *p = "sabcdefg";
47 char p1[30] = "y1234";//字符串常量"y1234"存储在数据段的只读数据段(or)无法改变其数据,将其拷贝至字符数组中,就可以改变其数据。
48 int len = 0;
49 printf("len = %d\n",mystrlen(p));
50
51 mystrcat(p1,p);
52 printf("p1 = %s\n",p1);
53
54 mystrcpy(p1,p);
55 printf("p1 = %s\n",p1);
56
57 char *p2 = "fffffeee";
58 int t = mystrcmp(p,p2);
59 printf("%d\n",t);
60 if(t>0)
61 printf("p>p2\n");
62 else if(t<0)
63 printf("p<p2\n");
64 else
65 printf("p == p2\n");
66
67 return 0;
68 }