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 }