1 #include <assert.h>
2
3 //比较两个字符串大小
4 int strcmp(const char *str1,const char *str2)
5 {
6 assert((*str1!=NULL)&&(*str2!=NULL));
7 while(*str1!='\0'&&*str2!='\0'&& *str1==*str2 )
8 {
9 str1++;
10 str2++;
11 }
12 int res=*str1-*str2;
13 if(res==0)
14 return 0; //str1等于str2
15 else if (res>0)
16 return 1; //str1大于str2
17 else
18 return -1; //str1小于str2
19 }
20
21 void main()
22 {
23 int x=strcmp("abc","abe");
24 printf("%d\n",x);
25 }
1 //把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
2 char *strcat(char *dest,char *src) //注:实参dest需要有足够空间容纳src,否则报错
3 {
4 assert((*dest!=NULL)&&(*src!=NULL));
5 char *address=dest;
6 while(*dest!='\0')
7 {
8 dest++;
9 }
10 while(*dest++=*src++)
11 {
12 NULL;
13 }
14 return address;
15 }
16
17 void main()
18 {
19 char str1[100]="abc",str2[]="efg";
20 char *p=strcat(str1,str2);
21 printf("%s\n",p);
22 }
1 //把从strSrc地址开始且含有NULL结束符的字符串赋值到以strDest开始的地址空间
2 char *strcpy(char *strDest,const char *strSrc)
3 {
4 assert((*strDest!=NULL)&&(*strSrc!=NULL));
5 char *address=strDest;
6 while((*strDest++=*strSrc++)!='\0')
7 {
8 NULL;
9 }
10 return address;
11 }
12
13 void main()
14 {
15 char str1[100]="abc",str2[]="efghig";
16 char *p=strcpy(str1,str2);
17 printf("%s\n",p);
18 }