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

📄 string.c

📁 Simple Operating Systems (简称SOS)是一个可以运行在X86平台上(包括QEMU
💻 C
字号:
/* Copyright (C) 2004  David Decotigny (with INSA Rennes for vsnprintf)   Copyright (C) 2003  The KOS Team   Copyright (C) 1999  Free Software Foundation   This program is free software; you can redistribute it and/or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation; either version 2   of the License, or (at your option) any later version.      This program 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 General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,   USA. */#include "string.h"/* For an optimized version, see BSD sources ;) */void *memcpy(void *dst0, const void *src0, register unsigned int size){  char *dst;  const char *src;  for (dst = (char*)dst0, src = (const char*)src0 ;       size > 0 ;       dst++, src++, size--)    *dst = *src;  return dst0;}/* ditto */void *memset(void *dst0, register int c, register unsigned int length){  char *dst;  for (dst = (char*) dst0 ;       length > 0 ;       dst++, length --)    *dst = (char)c;  return dst0;}int memcmp(const void *s1, const void *s2, size_t len){  const unsigned char *c1, *c2;  unsigned int i;   for (i = 0, c1 = s1, c2 = s2; i < len; i++, c1++, c2++)    {      if(*c1 != *c2)        return *c1 - *c2;    }   return 0;}unsigned int strlen(register const char *str){  unsigned int retval = 0;    while (*str++)    retval++;    return retval;}unsigned int strnlen(const char * s, size_t count){  const char *sc;    for (sc = s; count-- && *sc != '\0'; ++sc)    /* nothing */continue;  return sc - s;}char *strzcpy(register char *dst, register const char *src, register int len){  int i;  if (len <= 0)    return dst;    for (i = 0; i < len; i++)    {      dst[i] = src[i];      if(src[i] == '\0')        return dst;    }    dst[len-1] = '\0';   return dst;}char *strzcat (char *dest, const char *src, size_t n){  char *res = dest;    for ( ; *dest ; dest++);    for ( ; *src ; src++, dest++) {    *dest = *src;    n--;    if (n <= 0)      break;  }  *dest = '\0';  return res;}int strcmp(register const char *s1, register const char *s2){  while (*s1 == *s2++)    if (*s1++ == 0)      return (0);    return (*(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1));}int strncmp(register const char *s1, register const char *s2, register int len){  char c1 = '\0', c2 = '\0';    while (len > 0)    {      c1 = (unsigned char) *s1++;      c2 = (unsigned char) *s2++;      if (c1 == '\0' || c1 != c2)        return c1 - c2;      len--;    }    return c1 - c2;}

⌨️ 快捷键说明

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