字符串操作函数原型实现

来源:互联网 发布:php调取数据库 编辑:程序博客网 时间:2024/05/23 15:45
//将两个char类型连接:char * __cdecl strcat(char * dst, const char * src){         char * cp = dst;         while( *cp )                 cp++;          while( *cp++ = *src++ ) ;         return( dst );} //C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间: char * __cdecl strcpy(char * dst, const char * src){         char * cp = dst;         while( *cp++ = *src++ );           return( dst );}//查找字符串s中首次出现字符c的位置 char * __cdecl strchr(const char * string, int ch){         while (*string && *string != (char)ch)                 string++;         if (*string == (char)ch)                 return((char *)string);         return(NULL);}/*C/C++函数,比较两个字符串,设这两个字符串为str1,str2,若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数. */int __cdecl strcmp(const char * src,const char * dst){         int ret = 0 ;         while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)                 ++src, ++dst;         if ( ret < 0 )                 ret = -1 ;         else if ( ret > 0 )                 ret = 1 ;         return( ret );}//求字符串长度 size_t __cdecl strnlen(const char *str, size_t maxsize){     size_t n;     for (n = 0; n < maxsize && *str; n++, str++) ;          return n;}//求字符串长度size_t __cdecl strlen(const char * str){         const char *eos = str;         while( *eos++ ) ;         return( eos - str - 1 );}//拷贝安全函数 errno_t __cdecl strcpy_s(_CHAR *_DEST, size_t _SIZE, const _CHAR *_SRC){     _CHAR *p;     size_t available;     _VALIDATE_STRING(_DEST, _SIZE);     _VALIDATE_POINTER_RESET_STRING(_SRC, _DEST, _SIZE);     p = _DEST;     available = _SIZE;     while ((*p++ = *_SRC++) != 0 && --available > 0){}     if (available == 0)     {         _RESET_STRING(_DEST, _SIZE);         _RETURN_BUFFER_TOO_SMALL(_DEST, _SIZE);     }     _FILL_STRING(_DEST, _SIZE, _SIZE - available + 1);     _RETURN_NO_ERROR;}char * __cdecl strncpy(char * dest, const char * source, size_t count){         char *start = dest;         while (count && (*dest++ = *source++))    // copy str                  count--;         if (count)       while (--count)                   *dest++ = '\0';         return(start); }/*strstr(str1,str2)函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL. */char * __cdecl strstr(const char * str1, const char * str2){         char *cp = (char *) str1;         char *s1, *s2;         if ( !*str2 )             return((char *)str1);         while (*cp)         {                 s1 = cp;                 s2 = (char *) str2;                 while (*s1 && *s2 && !(*s1-*s2)) s1++, s2++;                 if (!*s2)                         return(cp);                 cp++;         }         return(NULL);}//strstr(str1,str2)函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中最后一次次出现的地址(也就是从右往左第一次出现的位置);否则,返回NULL.char * __cdecl strrchr(const char * string, int ch){         char *start = (char *)string;         while (*string++) ; /* find end of string */                while (--string != start && *string != (char)ch) ;         if (*string == (char)ch)  return( (char *)string );         return(NULL);}


 

0 0
原创粉丝点击