/*
Libft Copyright (C) 2026 yctct
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
#include "libft.h"
int ft_memcmp(const void *s1, const void *s2, size_t n)
{
unsigned char *cs1;
unsigned char *cs2;
size_t i;
cs1 = (unsigned char *)s1;
cs2 = (unsigned char *)s2;
i = 0;
if (n == 0)
return (0);
while (i < n - 1 && cs1[i] == cs2[i])
i++;
return (cs1[i] - cs2[i]);
}
/*
#include
int main(void)
{
char s[] = {-128, 0, 127, 0};
char sCpy[] = {-128, 0, 127, 0};
printf("%i\n", ft_memcmp(s, sCpy, 4));
printf("%i\n", memcmp(s, sCpy, 4));
printf("%i\n", ft_memcmp("abcdefghij", "abcdefgxyz", 7));
printf("%i\n", memcmp("abcdefghij", "abcdefgxyz", 7));
}
int ft_memcmp(const void *s1, const void *s2, size_t n)
{
size_t i;
unsigned char *a;
unsigned char *b;
i = 0;
a = (unsigned char *)s1;
b = (unsigned char *)s2;
if (s1 == s2 || n == 0)
return (0);
while (*a == *b && i < n - 1)
{
a++;
b++;
i++;
}
return (*a - *b);
}
*/
/*
int main(void)
{
char s[] = {-128, 0, 127, 0};
char sCpy[] = {-128, 0, 127, 0};
char s2[] = {0, 0, 127, 0};
char s3[] = {0, 0, 42, 0};
printf("\n");
printf("%i\n", ft_memcmp(s, sCpy, 4));
printf("%i\n", memcmp(s, sCpy, 4));
printf("\n");
printf("%i\n", ft_memcmp(s, s2, 0));
printf("%i\n", memcmp(s, s2, 0));
printf("\n");
printf("%i\n", ft_memcmp(s, s2, 1));
printf("%i\n", memcmp(s, s2, 1));
printf("\n");
printf("%i\n", ft_memcmp(s2, s, 1));
printf("%i\n", memcmp(s2, s, 1));
printf("\n");
printf("%i\n", ft_memcmp(s2, s3, 4));
printf("%i\n", memcmp(s2, s3, 4));
printf("\n");
printf("\n");
printf("%i\n", ft_memcmp("salut", "salut", 5));
printf("%i\n", memcmp("salut", "salut", 5));
printf("\n");
printf("%i\n", ft_memcmp("t\200", "t\0", 2));
printf("%i\n", memcmp("t\200", "t\0", 2));
printf("\n");
printf("%i\n", ft_memcmp("testss", "test", 5));
printf("%i\n", memcmp("testss", "test", 5));
printf("\n");
printf("%i\n", ft_memcmp("test", "tEst", 4));
printf("%i\n", memcmp("test", "tEst", 4));
printf("\n");
printf("%i\n", ft_memcmp("", "test", 4));
printf("%i\n", memcmp("", "test", 4));
printf("\n");
printf("%i\n", ft_memcmp("test", "", 4));
printf("%i\n", memcmp("test", "", 4));
printf("\n");
printf("%i\n", ft_memcmp("abcdefghij", "abcdefgxyz", 7));
printf("%i\n", memcmp("abcdefghij", "abcdefgxyz", 7));
printf("\n");
printf("%i\n", ft_memcmp("abcdefgh", "abcdwxyz", 6));
printf("%i\n", memcmp("abcdefgh", "abcdwxyz", 6));
printf("\n");
printf("%i\n", ft_memcmp("zyxbcdefgh", "abcdefgxyz", 0));
printf("%i\n", memcmp("zyxbcdefgh", "abcdefgxyz", 0));
return (0);
}
*/