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.  
  • 相关阅读:
    ​《数据库系统概念》5-连接、视图和事务
    ​《数据库系统概念》4-DDL、集合运算、嵌套子查询
    ​《数据库系统概念》3-主键、关系运算
    ​《数据库系统概念》2-存储、事务等的简介
    ​《数据库系统概念》1-数据抽象、模型及SQL
    Web API与JWT认证
    巨杉Tech | 十分钟快速搭建 Wordpress 博客系统
    巨杉内核笔记(一)| SequoiaDB 会话(session)简介
    SequoiaDB巨杉数据库入门:快速搭建流媒体服务器
    微服务?数据库?它们之间到底是啥关系?
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/11370310.html
Copyright © 2011-2022 走看看