<系统函数实现>memcmp

这是我实现的memcmp函数:

 1 #include <stdio.h>

 2 #include <string.h>

 3 /*

 4 *int memcmp (const void *s1,const void *s2,size_t n);

 5 *º¯Êý˵Ã÷

 6 *memcmp()ÓÃÀ´±È½Ïs1ºÍs2ËùÖ¸µÄÄÚ´æÇø¼äÇ°n¸ö×Ö·û¡£×Ö·û´®´óСµÄ±È½ÏÊÇÒÔASCIIÂë±íÉϵÄ˳ÐòÀ´¾ö¶¨£¬´Î˳ÐòÒàΪ×Ö·ûµÄÖµ¡£memcmp()Ê×ÏȽ«s1µÚÒ»¸ö×Ö·ûÖµ¼õÈ¥s2µÚÒ»¸ö×Ö·ûµÄÖµ£¬

 7 *Èô²îΪ0ÔòÔÙ¼ÌÐø±È½Ïϸö×Ö·û£¬Èô²îÖµ²»Îª0Ôò½«²îÖµ·µ»Ø¡£ÀýÈ磬×Ö·û´®"Ac"ºÍ"ba"±È½ÏÔò»á·µ»Ø×Ö·û'A'(65)ºÍ'b'(98)µÄ²îÖµ(£­33)¡£

 8 *·µ»ØÖµ

 9 Èô²ÎÊýs1ºÍs2ËùÖ¸µÄÄÚ´æÄÚÈݶ¼ÍêÈ«ÏàͬÔò·µ»Ø0Öµ¡£s1Èô´óÓÚs2Ôò·µ»Ø´óÓÚ0µÄÖµ¡£s1ÈôСÓÚs2Ôò·µ»ØСÓÚ0µÄÖµ¡£

10 *p is src, q is des, len is length of p

11 *error     =-1

12 *p>q     >0

13 *p<q     <0

14 *p==q    =0

15 */

16 int _memcmp(const void *p,const void *q,int len)

17 {

18     if(!p || !q)

19     {

20         return -1;

21     }

22 

23    // while((*(char *)p != '\0') && (*(char *)q != '\0') && (len > 0))
    while(len > 0)//this is strcmp , memcmp should't test \0
24 { 25 //printf("p %p:%d q %p:%d len %d\n",p,*(char *)p,q,*(char *)q,len); 26 if((*(char *)p - *(char *)q) != 0) 27 { 28 29 return (*(char *)p-*(char *)q); 30 } 31 p++; 32 q++; 33 len--; 34 } 35 36 if((len > 0 ) && (*(char *)p != '\0')) 37 { 38 return 1; 39 } 40 41 if((len > 0 ) && (*(char *)q != '\0')) 42 { 43 return -1; 44 } 45 46 return 0; 47 } 48 49 50 int main(int argc, char **argv) 51 { 52 char *p = "abcfgf"; 53 54 char *q = "abcfg"; 55 56 int val; 57 58 val = memcmp(p,q,6); 59 printf("sys val is %d\n",val); 60 61 val = _memcmp(p,q,6); 62 63 printf("my val is %d \n",val); 64 65 return 0; 66 }

 

你可能感兴趣的:(函数)