wolflion

string.h中的函数与实现

关于string的一些实现,可见如下链接:http://www.jbox.dk/sanos/source/lib/string.c.html

http://longsy.javaeye.com/blog/353627【这个博文也不错】

http://blog.csdn.net/sky2098/archive/2007/03/15/1530689.aspx【他整理的函数也不错,呵呵】

int strcpy(char* a,char* b)  将b复制到a
char* strcpy(char* dest,const char* src)
{
   char* tmp = dest;
   while((*dest ++ = *src ++) != '\0')//nothing
   return tmp;
}

int strcat(char* a,char* b)  将b连接到a后面
char* strcat(char* dest,const char* src)
{
   char* tmp = dest;
   while(*dest)
      dest++;
   while((*dest++ = *src++) != '\0')
      ;
   return tmp;
}

int strcmp(char* a,char* b)  比较字符串
int strcmp(const char* cs,const char* ct)
{
   register signed char _res;
   while(1){
      if((_res = *cs - *ct++)!=0 || !*cs++)
         break;
   }
   return _res;
}

size_t strlen(const char* s)
{
   const char* sc;
   for(sc = s;count-- && *sc != '\0';++sc)//nothing
   return sc - s;
}


void *memset(void *s,int c,size_t count)
{
   char* xs = (char *) s;
   while(count --)
      *xs++ = c;
   return s;
}



void *memcpy(void *dest,const void *src,size_t count)
{
   char *tmp = (char *)dest,*s = (char *)src;
   while(count --)
      *tmp++ = *s++;
   return dest;
}



void memcmp(const void *cs,const void *ct,size_t count)
{
   const unsigned char *su1,*su2;
   int res = 0;
   for(sul = cs,su2=ct;0<count;++su1,++su2,count--)
      if((res = *su1 - *su2) !=0)
         break;
   return res;
}

posted on 2009-12-24 13:35 lionel 阅读(142) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理