strncasecmp.c 385 B

1234567891011121314151617181920212223242526272829
  1. #include <string.h>
  2. typedef unsigned char uchar;
  3. int
  4. strncasecmp(char *s1, char *s2, int n)
  5. {
  6. int c1, c2;
  7. while(*s1 && n-- > 0){
  8. c1 = *(uchar*)s1++;
  9. c2 = *(uchar*)s2++;
  10. if(c1 == c2)
  11. continue;
  12. if(c1 >= 'A' && c1 <= 'Z')
  13. c1 -= 'A' - 'a';
  14. if(c2 >= 'A' && c2 <= 'Z')
  15. c2 -= 'A' - 'a';
  16. if(c1 != c2)
  17. return c1 - c2;
  18. }
  19. if(n <= 0)
  20. return 0;
  21. return -*s2;
  22. }