strncmp.c 537 B

1234567891011121314151617181920212223242526
  1. /*
  2. * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
  3. * See the copyright notice in the ACK home directory, in the file "Copyright".
  4. */
  5. /* $Id$ */
  6. #include <string.h>
  7. int
  8. strncmp(register const char *s1, register const char *s2, register size_t n)
  9. {
  10. if (n) {
  11. do {
  12. if (*s1 != *s2++)
  13. break;
  14. if (*s1++ == '\0')
  15. return 0;
  16. } while (--n > 0);
  17. if (n > 0) {
  18. if (*s1 == '\0') return -1;
  19. if (*--s2 == '\0') return 1;
  20. return (unsigned char) *s1 - (unsigned char) *s2;
  21. }
  22. }
  23. return 0;
  24. }