关于字符串处理的几个函数的源代码

作者在 2008-06-30 00:32:09 发布以下内容
今天看了一个syslinux-2.11-1的源代码,
其中有有关字符串处理的几个函数,
这个函数的设计很经典,很值得借鉴。
因此,把它发出来给大家欣赏一下。

void *memset(void *buf, int chr, unsigned int len)
{
  asm("cld ; rep ; stosb" : "+D" (buf), "+c" (len) : "a" (chr));
  return buf;
}

char *strcpy(char *dst, const char *src)
{
  char *r = dst;
  char c;

  do {
    c = *src++;
    *dst++ = c;
  } while ( c );

  return r;
}

char *strcat(char *dst, const char * src)
{
  char *r = dst;

  while (*dst++); // Find end of string
  dst--;
  while (*src) *dst++ = *src++; // Append
  *dst = '\0'; // Terminate string

  return r;
}

int strcmp(const char *a, const char*b)
{
    while (*a)
    {
        if (*a < *b) return -1;
        if (*a++ > *b++) return 1;
    }
    if (*b) return 1; else return 0;
}

int strlen(const char *a)
{
  int ans = 0;
 
  while (*a++) ans++;
  return ans;
}

推荐文章 | 阅读 4499 次
文章评论,共0条
游客请输入验证码