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 }