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.  
  • 相关阅读:
    POJ 2251 Dungeon Master(bfs)
    POJ 3275 Catch That Cow(bfs)
    POJ 3984 迷宫问题(bfs+路径记录)
    POJ 3620 Avoid The Lakes
    ZOJ 2100 Seeding
    POJ 2245 Lotto
    HDU 1181 变形课
    dedecms网站栏目增加缩略图的方法-测试通过
    dedecms缩略图模糊终极完美解决办法
    dedecms 留言板中引用模板文件方法
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/11370310.html
Copyright © 2011-2022 走看看