zoukankan      html  css  js  c++  java
  • C语言中字符串常用函数--strcat,strcpy

    strcpy

    原型声明:extern char *strcpy(char* dest, const char *src);
    头文件:#include <string.h>
    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针
    函数实现:
     
    1.  
      /**********************
    2.  
       * C语言标准库函数strcpy的一种典型的工业级的最简实现
    3.  
       * 返回值:目标串的地址。
    4.  
       * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
    5.  
       * 参数:
    6.  
       * strDestination 目标串
    7.  
       * strSource 源串
    8.  
       ***********************/
    9.  
       
    10.  
       char *strcpy(char *strDestination,const char *strSource)
    11.  
       {
    12.  
        assert(strDestination!=NULL && strSource!=NULL);
    13.  
        char *strD=strDestination;
    14.  
        while ((*strD++=*strSource++)!='');
    15.  
        return strDestination;
    16.  
       }
    17.  
       
    18.  
       /*
    19.  
       GNU-C中的实现(节选):
    20.  
       */
    21.  
       char* strcpy(char *d, const char *s)
    22.  
       {
    23.  
        char *r=d;
    24.  
        while((*d++=*s++));
    25.  
        return r;
    26.  
       }
    27.  
       /* while((*d++=*s++)); 的解释:两层括号是为了取赋值表达式的值,
    28.  
      而赋值表达式的值为左操作数,所以在复制NULL后,循环停止 */


    strcat

    原型

    extern char *strcat(char *dest,char *src);

    用法

    #include <string.h>
    在C++中,则存在于<cstring>头文件中。

    功能

    把src所指字符串添加到dest结尾处(覆盖dest结尾处的'')并添加''。

    说明

    src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针
    函数实现:
    1.  
      //将源字符串加const,表明其为输入参数
    2.  
      char *strcat(char *strDest, const char *strSrc)
    3.  
      {
    4.  
      // 后文return address,故不能放在assert断言之后声明address
    5.  
      char *address = strDest;
    6.  
      assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言
    7.  
      while(*strDest) //是while(*strDest!=’’)的简化形式
    8.  
      {
    9.  
      //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
    10.  
      //那么strDest将指向''的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
    11.  
      //向该字符串的结束标志’’。
    12.  
      strDest++;
    13.  
      }
    14.  
       
    15.  
      while(*strDest++ = *strSrc++)
    16.  
      {
    17.  
      NULL; //该循环条件内可以用++,
    18.  
      } //此处可以加语句*strDest=’’;无必要
    19.  
      return address; //为了实现链式操作,将目的地址返回
    20.  
  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/11370310.html
Copyright © 2011-2022 走看看