๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฐ42์„œ์šธ/libft

[libft] ft_strncmp, ft_memcmp ๊ตฌํ˜„

๐Ÿ“Œ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๋ฅผ ๋น„๊ตํ•œ๋‹ค.