memcmp.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:1k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* memcmp.c - memory compare file for string */
  2. /* Copyright 1992-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,25feb93,jdi  documentation cleanup for 5.1.
  7. 01b,20sep92,smb  documentation additions
  8. 01a,08jul92,smb  written and documented.
  9. */
  10. /*
  11. DESCRIPTION
  12. INCLUDE FILE: string.h
  13. SEE ALSO: American National Standard X3.159-1989
  14. NOMANUAL
  15. */
  16. #include "vxWorks.h"
  17. #include "string.h"
  18. /*******************************************************************************
  19. *
  20. * memcmp - compare two blocks of memory (ANSI)
  21. *
  22. * This routine compares successive elements from two arrays of `unsigned char',
  23. * beginning at the addresses <s1> and <s2> (both of size <n>), until it finds
  24. * elements that are not equal.
  25. *
  26. * INCLUDE FILES: string.h
  27. *
  28. * RETURNS:
  29. * If all elements are equal, zero.  If elements differ and the differing
  30. * element from <s1> is greater than the element from <s2>, the routine
  31. * returns a positive number; otherwise, it returns a negative number.
  32. */
  33. int memcmp
  34.     (
  35.     const void * s1, /* array 1 */
  36.     const void * s2, /* array 2 */
  37.     size_t       n /* size of memory to compare */
  38.     )
  39.     {
  40.     const unsigned char *p1;
  41.     const unsigned char *p2;
  42.     /* size of memory is zero */
  43.     if (n == 0)
  44. return (0);
  45.     /* compare array 2 into array 1 */
  46.     p1 = s1;
  47.     p2 = s2;
  48.     while (*p1++ == *p2++)
  49. {
  50. if (--n == 0)
  51.     return (0);
  52.         }
  53.     return ((*--p1) - (*--p2));
  54.     }