几个常见字符串函数的实现

来源:互联网 发布:手机淘宝怎么登陆卖家 编辑:程序博客网 时间:2024/04/30 09:16
1、实现strstr函数
const char * pstrstr(const char *haystack, const char *needle){    const char *p1, *p2;        p1 = haystack;    p2 = needle;    while (*haystack != '/0' && *needle != '/0')     {       if (*haystack++ != *needle++) {            needle = p2;            haystack = ++p1; //从下一个字符开始搜索needle              }    }    if (*needle == '/0')       return p1;    return NULL;} 
char *strstr(const char *strSrc, const char *str)   {       assert(strSrc != NULL && str != NULL);       const char *s = strSrc;       const char *t = str;       for (; *strSrc != '/0'; ++ strSrc)       {           for (s = strSrc, t = str; *t != '/0' && *s == *t; ++s, ++t)               NULL;           if (*t == '/0')               return (char *) strSrc;       }       return NULL;   }   

2、实现strcpy函数

 
char *strcpy(char *dest,char *src); 
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

src字符串尾的字符串结束标识符'/0'也会被复制过去,复制完成后s1中的内容会被覆盖掉

char * strcpy( char *strDest, const char *strSrc ) {    assert( (strDest != NULL) && (strSrc != NULL) );    char *address = strDest;     while( (*strDest++ = * strSrc++) != '/0' );     return address;} 

int strcmp(const char *s, const char *t)   {       assert(s != NULL && t != NULL);       while (*s && *t && *s == *t)       {           ++ s;           ++ t;       }       return (*s - *t);   }  
3、实现strlen函数

int strlen(const char *str)   {       assert(str != NULL);       int len = 0;       while (*str ++ != '/0')           ++ len;       return len;   }   

4、实现strlen函数

//查找字符串s中首次出现字符c的位置   char *strchr(const char *str, int c)   {       assert(str != NULL);       for (; *str != (char)c; ++ str)           if (*str == '/0')               return NULL;           return str;   }     

5、实现strcny函数
char *strncpy(char *strDes, const char *strSrc, unsigned int count)      {          assert(strDes != NULL && strSrc != NULL);          char *address = strDes;          while (count-- && *strSrc != '/0')              *strDes++ = *strSrc++;       *strDes = '/0';      return address;      }     
原创粉丝点击