C语言中的字符串操作函数

char *strchr (const char * string, int ch)
{
while (*string && *string != (char)ch)
string++;
if (*string == (char)ch)
return((char *)string);
return(NULL);
}

char * strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ )
;               /* Copy src over dst */
return( dst );
}

char *strcat (char * dst,const char * src)
{
char * cp = dst;
while( *cp )
cp++;                   /* find end of dst */
while( *cp++ = *src++ ) ;       /* Copy src to end of dst */
return( dst );                  /* return dst */
}

int 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 );
}

char * strdup (const char * string)
{
char *memory;
    size_t size = 0;
if (!string)
return(NULL);
    size = strlen(string) + 1;
     if (memory = malloc(size))
     {
strcpy(memory, size, string));
return memory;
     }
     return(NULL);
}

int stricmp (const char * dst,const char * src)
{
    int f, l;
    do
    {
        if ( ((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z') )
            f -= 'A' - 'a';
        if ( ((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z') )
            l -= 'A' - 'a';
    }
    while ( f && (f == l) );
    return(f - l);
}

size_t  strlen (const char * str)
{
const char *eos = str;
while( *eos++ ) ;
return( eos - str - 1 );
}

size_t  strnlen(const char *str, size_t maxsize)
{
    size_t n;
    /* Note that we do not check if s == NULL, because we do not
* return errno_t...
*/
    for (n = 0; n < maxsize && *str; n++, str++)
        ;
    return n;
}

char *  strlwr (char * string)
{
     char * cp;
     /* validation section */
     for (cp=string; *cp; ++cp)
     {
         if ('A' <= *cp && *cp <= 'Z')
             *cp += 'a' - 'A';
     }
   return(string);
}

char * strnset (char * string,int val,size_t count)
{
char *start = string;
while (count-- && *string)
*string++ = (char)val;
return(start);
}

int  strnicmp (const char * first,const char * last,size_t count)
{
    if(count)
    {
        int f=0;
        int l=0;
        do
        {
            if ( ((f = (unsigned char)(*(first++))) >= 'A') &&
(f <= 'Z') )
                f -= 'A' - 'a';
            if ( ((l = (unsigned char)(*(last++))) >= 'A') &&
(l <= 'Z') )
                l -= 'A' - 'a';
        }
        while ( --count && f && (f == l) );
        return ( f - l );
    }
    else
    {
        return 0;
    }
}

size_t strncnt (const char *string, size_t cnt)
{
size_t n = cnt;
char *cp = (char *)string;
while (n-- && *cp)
cp++;
return cnt - n - 1;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值