【c语言】strcat源代码

/** Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.

   This file is part of the GNU C Library.



   The GNU C Library is free software; you can redistribute it and/or

   modify it under the terms of the GNU Lesser General Public

   License as published by the Free Software Foundation; either

   version 2.1 of the License, or (at your option) any later version.



   The GNU C Library is distributed in the hope that it will be useful,

   but WITHOUT ANY WARRANTY; without even the implied warranty of

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

   Lesser General Public License for more details.



   You should have received a copy of the GNU Lesser General Public

   License along with the GNU C Library; if not, write to the Free

   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA

   02111-1307 USA.  */



#include <string.h>

#include <memcopy.h>



#undef strcat



/** Append SRC on the end of DEST.  */

char *

strcat (dest, src)

     char *dest;

     const char *src;

{

  char *s1 = dest;

  const char *s2 = src;

  reg_char c;



  /** Find the end of the string.  */

  do

    c = *s1++;

  while (c != '\0');



  /** Make S1 point before the next character, so we can increment

     it while memory is read (wins on pipelined cpus).  */

  s1 -= 2;



  do

    {

      c = *s2++;

      *++s1 = c;
  /*
  此处,经测试,即使不用字符c,直接使用*++s1 = *s2++;
  也是可以的。但glibc这样编写有一个好处,易读。
*/ } while (c != '\0'); return dest; } libc_hidden_builtin_def (strcat)

 

你可能感兴趣的:(C语言)