memcpy.c

来自「c库的部分源代码 用惯了操作系统提供的内存api,你是否了解系统的运行机制,这是」· C语言 代码 · 共 36 行

C
36
字号
/***********************************************************************\
*	Copyright 1990 Software Development Systems, Inc.		*
*	all rights reserved						*
\***********************************************************************/
#include <string.h>

#define SRCL	((unsigned long*)src)
#define DSTL	((unsigned long*)dst)
#define ENDL	((unsigned long*)end)

void   *memcpy ( s1, s2, n )
  void		*s1;
  const void	*s2;
  size_t	 n;
{
    register unsigned char *src = (unsigned char *)s2;
    register unsigned char *dst = (unsigned char *)s1;
    register unsigned char *end = src;

    end += n;

#if !_TARG_Z80 && !_TARG_HD64180
    if ( n >= 16 && !(((unsigned long)dst|(unsigned long)src)&3) )
    {
	n &= sizeof( unsigned long ) - 1 ;
	end -= n;
	while ( SRCL < ENDL )  *DSTL++ = *SRCL++;
	end += n;
    }
#endif

    while ( src < end )  *dst++ = *src++;

    return s1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?