1 size_t mystrlen(char c[])
2 {
3 int i=0;
4 while(c[i]!=0)
5 {
6 i++;
7 }
8 return i;
9 }
10
11 void mystrcpy(char a[],char b[])
12 {
13 int i=0;
14 while(b[i]!=0)
15 {
16 a[i]=b[i];
17 i++;
18 }
19 a[i]='\0';
20 }
21
22 int mystrcmp(char a[],char b[])
23 {
24 int i=0;
25 while(!(a[i]-b[i])&&a[i]&&b[i])
26 {
27 i++;
28 }
29 if(a[i]-b[i]<0)
30 {
31 return -1;
32 }else if(a[i]-b[i]>0){
33 return 1;
34 }else{
35 return 0;
36 }
37 }
38
39 void mystrcat(char a[],char b[])
40 {
41 int i=0,al;
42 al=mystrlen(a);
43 while(b[i])
44 {
45 a[al]=b[i];
46 i++;
47 al++;
48 }
49 a[al]='\0';
50 }
1 // strcat的实现
2 char * strcat(char * dest, const char * src){
3 assert(dest && src);
4 char * ret = dest;
5 // 找到dest的'\0'结尾符
6 while(*dest){
7 dest++;
8 }
9 // 拷贝(while循环退出时,将结尾符'\0'也做了拷贝)
10 while(*dest++ = *src++){}
11 return ret;
12 }
13
14 // strcmp的实现
15 int strcmp(const char * str1, const char * str2){
16 assert(str1 && str2);
17 // 找到首个不相等的字符
18 while(*str1 && *str2 && (*str1==*str2)){
19 str1++;
20 str2++;
21 }
22 return *str1 - *str2;
23 }
24
25 // strcpy的实现
26 char * strcpy(char * dest, const char * src){
27 assert(dest && src);
28 char * ret = dest;
29
30 // 内存拷贝的字节数
31 int count = strlen(src) + 1;
32 // 内存拷贝
33 if(dest <= src || (dest >= src + count)){
34 // 拷贝方向:从低字节到高字节
35 while(count--){
36 *dest++ = *src++;
37 }
38 }else{
39 // 拷贝方向:从高字节向低字节
40 dest += (count -1);
41 src += (count -1);
42 while(count--){
43 *dest--=*src--;
44 }
45 }
46 return ret;
47 }
48
49 //求字符串长度的函数
50 int my_strlen(const char* pStr)
51 {
52 assert(pStr != NULL);
53 int length = 0;
54 while (*pStr++ != '\0')
55 {
56 length++;
57 }
58 return length;
59 }