util 收集。。。。以后追加在此处

本文介绍了如何判断IP地址是否为组播或多播地址,并提供了自定义实现的字符串操作函数,如字符串复制、连接及比较等。这些函数适用于低级语言环境中对标准库函数的替代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2011年6月9日 星期四 15:25:16

BOOL
IsMulticastIP (
    IN DWORD dwIP   //  network order
    ) ;

BOOL
IsUnicastIP (
    IN DWORD dwIP   //  network order
    ) ;


static unsigned char chMinClassD_IP [] = { 224, 0,   0,   0   } ;
static unsigned char chMaxClassD_IP [] = { 239, 255, 255, 255 } ;

BOOL
IsMulticastIP (
    IN DWORD dwIP   //  network order
    )
{
    return (((unsigned char *) & dwIP) [0] >= chMinClassD_IP [0] &&
            ((unsigned char *) & dwIP) [0] <= chMaxClassD_IP [0]) ;
}

BOOL
IsUnicastIP (
    IN DWORD dwIP   //  network order
    )
{
    return (((unsigned char *) & dwIP) [0] < chMinClassD_IP [0]) ;
}


2011-9-4

void * my_memccpy(void *dest,const void *src,int c,int count)
{
    
while ( count && (*((char *)(dest = (char *)dest + 1- 1=
        
*((char *)(src = (char *)src + 1- 1)) != (char)c )
        count
--;
    
return(count ? dest : NULL);

}


//memset
void *my_memset(void *buffer, int c, int count)
{
    
char* p = (char*)buffer;
    
while(count--
        
*p++ = (char)c;
    
return buffer;
}

//memcpy
void * my_memcpy(void *dst,const void *src,int count)
{
    
void * ret = dst;
    
while (count--
    
{
        
*(char *)dst = *(char *)src;
        dst 
= (char *)dst + 1;
        src 
= (char *)src + 1;
    }

    
return(ret);
}



//memmove
/*
memmove()由src所指定的内存区域赋值count个字符到dst所指定的内存区域。
src和dst所指内存区域可以重叠,但复制后src的内容会被更改。函数返回指向dst的指针。
*/


void * my_memmove(void * dst,const void * src,int count)
{
    
void * ret = dst;
    
if (dst <= src || (char *)dst >= ((char *)src + count)) 
    
{
        
while (count--
        
{
            
*(char *)dst = *(char *)src;
            dst 
= (char *)dst + 1;
            src 
= (char *)src + 1;
        }

    }

    
else 
    
{
        dst 
= (char *)dst + count - 1;
        src 
= (char *)src + count - 1;
        
while (count--
        
{
            
*(char *)dst = *(char *)src;
            dst 
= (char *)dst - 1;
            src 
= (char *)src - 1;
        }


    }

    
return(ret);
}



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


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


int my_strlen(const char * str )
{
    
const char *= str;
    
while*p++ ) ;
    
return( (int)(p - str - 1) );

}

//strcmp
int my_strcmp(const char *string1, const char *string2 )
{
    
int ret;
    
while(    ( ret=*(unsigned char *)string1++ -*(unsigned char *)string2++)==0 &&   string1  );
    
return ret;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值