๐strncmp
โ๏ธ ํจ์ ํ๋กํ ํ์
int strncmp(const char *s1, const char *s2, size_t n);
โ๏ธ ํจ์์ ์ญํ : ๋๋ก ์ข ๋ฃ๋๋ ๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. n์ ๋์ด๊ฐ๋ ๊ธธ์ด๋ฅผ ๋น๊ตํ์ง ์๋๋ค.
โ๏ธํจ์ ๋ฐํ๊ฐ
โ๏ธ s1 > s2 , ์์
โ๏ธ s1 == s2 , 0
โ๏ธ s1 < s2, ์์
๐์ถ๊ฐ ์ค๋ช ๐
โฟstrncmp๋ binary data๋ณด๋ค๋ ๋ฌธ์์ด์ ๋น๊ตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํจ์๋ก ๋ ๋ค์ ๋ํ๋๋ ๋ฌธ์๋ ๋น๊ตํ์ง ์๋๋ค.
โฟ๊ธธ์ด๊ฐ 0์ธ ๋ฌธ์์ด์ ํญ์ ๊ฐ๋ค.
โฟunsigned char๋ฅผ ์ด์ฉํ์ฌ ๋น๊ตํ๋ฏ๋ก '\200'์ด '\0'๋ณด๋ค ํฌ๋ค.
โ๏ธ๊ตฌํ
#include "libft.h"
int ft_strncmp(const char *s1, const char *s2, size_t n)
{
size_t i;
unsigned char *tmp1;
unsigned char *tmp2;
i = 0;
tmp1 = (unsigned char *)s1;
tmp2 = (unsigned char *)s2;
if (n == 0)
return (0);
while (i < n && (tmp1[i] || tmp2[i]))
{
if (tmp1[i] != tmp2[i])
return ((int)(tmp1[i] - tmp2[i]));
i++;
}
return (0);
}
๐memcmp
โ๏ธ ํจ์ ํ๋กํ ํ์
int memcmp(const void *s1, const void *s2, size_t n);
โ๏ธ ํจ์์ ์ญํ : ๋ฌธ์์ด s1๊ณผ s2๋ฅผ ๋น๊ต, ๋ฌธ์์ด์ n๋ฐ์ดํธ๋ผ๊ณ ๊ฐ์ ํ๋ค.
โ๏ธํจ์ ๋ฐํ๊ฐ
โ๏ธ ๋ ๋ฌธ์์ด์ด ๋์ผํ๋ฉด 0 ๋ฐํ
โ๏ธ ๋ค๋ฅด๋ฉด ๋ ๋ฐ์ดํธ์ ์ฐจ์ด๋ฅผ ๋ฐํ (๋ ๋ฌธ์๋ฅผ unsigned char๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์ '\200'์ '\0'๋ณด๋ค ํฌ๋ค.)
๐์ถ๊ฐ ์ค๋ช ๐
โฟ๊ธธ์ด๊ฐ 0์ธ ๋ฌธ์์ด์ ํญ์ ๊ฐ๋ค.
โ๏ธ๊ตฌํ
#include "libft.h"
int ft_memcmp(const void *s1, const void *s2, size_t n)
{
size_t i;
unsigned char *tmp1;
unsigned char *tmp2;
i = 0;
tmp1 = (unsigned char *)s1;
tmp2 = (unsigned char *)s2;
while (i < n)
{
if (tmp1[i] != tmp2[i])
return ((int)(tmp1[i] - tmp2[i]));
i++;
}
return (0);
}
โ strncmp์ memcmp์ ์ฐจ์ด
strncmp๋ ๋ฌธ์์ด ๋น๊ต๋ฅผ ์ํด ๋ง๋ค์ด์ง ํจ์๋ก ๊ธธ์ด n์ด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋์ด์๋ ๋๋ก ์ข ๋ฃ๋๋ ๊ณณ ๊น์ง๋ง ๋น๊ต!
memcmp๋ binary data๋ฅผ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ n์ด ๋ฌธ์์ด ๊ธธ์ด๋ณด๋ค ๊ธธ์ด๋ n byte๋ฅผ ๋น๊ตํ๋ค.
'๐ฐ42์์ธ > libft' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[libft] ft_memcpy, ft_memmove ๊ตฌํ (0) | 2022.02.16 |
---|---|
[libft] ft_memset, ft_bzero, ft_memchr ๊ตฌํ (0) | 2022.02.15 |
[42์์ธ] libft ์ ๋ฆฌ : ft_strchr, ft_strrchr๊ตฌํ (0) | 2022.02.13 |
[42์์ธ] libft ์ ๋ฆฌ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํ Makefile (0) | 2022.02.11 |
[42์์ธ] libft ์ ๋ฆฌ : ft_strlen, ft_strlcpy, ft_strlcat ๊ตฌํ (0) | 2022.02.07 |