c语言strcmp,strcat,strdup函数

1620阅读 0评论2013-07-15 double_lq
分类:C/C++

    1.  strcmp()函数用来比较两个字符串的大小并返回相应的结果。一般
   int i=strcmp(string 1,string2);
  若string1小于string2则返回负值;string1=string2返回0,;string1大于string2返回正值。
 具体实现代码如下:
    
  1. #include<iostream>
  2. #include<assert.h>
  3. using namespace std;

  4. int strcmp(const char* s,const char* t)
  5. {
  6.     assert(s!=NULL && t!=NULL);
  7.     while(*s && *t && *s==*t)
  8.     {
  9.      ++s;
  10.      ++t;
  11.     }
  12.     return (*s-*t);
  13. }


  14. int main()
  15. {
  16.     int n;
  17.     char *s="ab ce";
  18.     char *t="abcd";
  19.     n=strcmp(s,t);
  20.     if(n<0)
  21.         printf("s less than t\n");
  22.     else if(n==0)
  23.         printf("s id equal to t\n");
  24.     else
  25.         printf("s is bigger than t\n");
  26.     return 0;
  27. }

2.  char*strcat(dest,src)函数将src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
 实现代码如下:
  
  1. #include<iostream>
  2. #include<assert.h>
  3. using namespace std;

  4. char * strcat1(char* s,const char* t)
  5. {
  6.     assert(s!=NULL && t!=NULL);
  7.     char *address=s;
  8.     while(*s!='\0')
  9.         s++;
  10.     while((*s++=*t++)!='\0')  //先赋值,再比较,最后自增
  11.         NULL;
  12.     return address;
  13. }


  14. int main()
  15. {
  16.     char s[20]="abcd";
  17.     char *t="xyz";
  18.     strcat1(s,t);
  19.     printf("%s",s);
  20.     return 0;
  21. }


   3.strdup(char*strSrc)函数将串拷贝到新建的位置处,返回值为新分配的空间的地址。在函数内部,要用malloc分配内存,在使用完后要用free()释放空间,否则造成内存泄漏。函数实现代码如下:

   
  1. #include<iostream>
  2. #include<assert.h>
  3. using namespace std;

  4. char * strdup1(char* srcStr)
  5. {
  6.      int len=0;
  7.      char *start=srcStr;
  8.       if(srcStr!=NULL)
  9.      {
  10.      while(*srcStr++!='\0')
  11.              len++;

  12.          char *address=(char*)malloc(len+1);
  13.          assert(address!=NULL);

  14.          while((*address++=*start++)!='\0')
  15.              NULL;
  16.          return address-(len+1);
  17.      }
  18.      return NULL;
  19. }


  20. int main()
  21. {
  22.     char *t="abcdefghikgk";
  23.     char *address=strdup1(t);
  24.     printf("%s\n",address);
  25.     free(address);
  26.     return 0;
  27. }


   

上一篇:c语言strncpy函数
下一篇:浅析malloc&free工作原理