⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memset.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
字号:
/*FUNCTION	<<memset>>---set an area of memoryINDEX	memsetANSI_SYNOPSIS	#include <string.h>	void *memset(const void *<[dst]>, int <[c]>, size_t <[length]>);TRAD_SYNOPSIS	#include <string.h>	void *memset(<[dst]>, <[c]>, <[length]>)	void *<[dst]>;	int <[c]>;	size_t <[length]>;DESCRIPTION	This function converts the argument <[c]> into an unsigned	char and fills the first <[length]> characters of the array	pointed to by <[dst]> to the value.RETURNS	<<memset>> returns the value of <[m]>.PORTABILITY<<memset>> is ANSI C.    <<memset>> requires no supporting OS subroutines.QUICKREF	memset ansi pure*/#include <string.h>#define LBLOCKSIZE (sizeof(long))#define UNALIGNED(X)   ((long)X & (LBLOCKSIZE - 1))#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE)_PTR _DEFUN (memset, (m, c, n),	_PTR m _AND	int c _AND	size_t n){#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)  char *s = (char *) m;  while (n-- != 0)    {      *s++ = (char) c;    }  return m;#else  char *s = (char *) m;  unsigned int i;  unsigned long buffer;  unsigned long *aligned_addr;  if (!TOO_SMALL (n) && !UNALIGNED (m))    {      /* If we get this far, we know that n is large and m is word-aligned. */      aligned_addr = (unsigned long*)m;      /* Store C into each char sized location in BUFFER so that         we can set large blocks quickly.  */      c &= 0xff;      if (LBLOCKSIZE == 4)        {          buffer = (c << 8) | c;          buffer |= (buffer << 16);        }      else        {          buffer = 0;          for (i = 0; i < LBLOCKSIZE; i++)	    buffer = (buffer << 8) | c;        }      while (n >= LBLOCKSIZE*4)        {          *aligned_addr++ = buffer;          *aligned_addr++ = buffer;          *aligned_addr++ = buffer;          *aligned_addr++ = buffer;          n -= 4*LBLOCKSIZE;        }      while (n >= LBLOCKSIZE)        {          *aligned_addr++ = buffer;          n -= LBLOCKSIZE;        }      /* Pick up the remainder with a bytewise loop.  */      s = (char*)aligned_addr;    }  while (n--)    {      *s++ = (char)c;    }  return m;#endif /* not PREFER_SIZE_OVER_SPEED */}

⌨️ 快捷键说明

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