a c t i v i t y . . ๐Ÿ‹/42 SEOUL

42 SEOUL ์นด๋Žƒ ํ•˜๋ฃจ์ผ์ง€: libft ๋!

H J 2022. 4. 25. 16:55

# 220410
์˜ค๋Š˜์€ ๋“œ๋””์–ด ๊ฐœํฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ”์–ด์šฉ~~

๊ฐ€์„œ ๋ผํ”ผ์‹  ๋•Œ ํ–ˆ์—ˆ๋˜ ์ฝ”๋“œ๋“ค ๊นƒํ—™์— ์—…๋กœ๋“œ!

ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹๋ƒ…๋‹ค ์ฐํ•ด์ง„๊ฒŒ ๋„ˆ๋ฌด ์›ƒ๊ฒจ์š”~

๊ทธ๋ฆฌ๊ณ  part 2 ํ•จ์ˆ˜๋“ค๋„ ๋งˆ์ € ์งœ๊ณ ! ๋ณด๋„ˆ์Šค ํŒŒํŠธ ํ•จ์ˆ˜๊นŒ์ง€ ์งœ๊ณ ~ ํ…Œ์Šคํ„ฐ๊ธฐ ๋Œ๋ ค๋ดค๋Š”๋ฐ..
์ปดํŒŒ์ผ ์•ˆ ๋ผ์„œ ์ˆ˜์ •ํ•˜๋‹ค๊ฐ€~ ํ‰๊ฐ€ 2๋ฒˆ ํ•ด์„œ 84 ํฌ์ธํŠธ ๋ฒŒ๊ณ  ๋!

๊ทธ๋ฆฌ๊ณ  ์ฃผ๋จน๊ณ ๊ธฐ ๊ฐ”๋Š”๋ฐ ์›จ์ดํŒ….. ๊ทธ๋ž˜์„œ ๊ฑด๋„ˆํŽธ ์น˜ํ‚จ ์ง‘ ๊ฐ”๋Š”๋ฐ ์•ˆ๋˜๊ณ .. ๊ณฑ์ฐฝ๋„.. ๋‹ญ๊ฐˆ๋น„๋„.. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์น˜ํ‚จ์ง‘ ๊ฐ€์„œ ์น˜๋งฅํ•˜๊ณ  ์–‘์žฌ์ฒœ ๊ฑท๋‹ค๊ฐ€ ์ง‘์™”๋‹ค!!


# 220411
์˜๋ฏธ๋ž‘ ์„์ดŒํ˜ธ์ˆ˜ ๋ฒš๊ฝƒ๋ณด๊ณ ~ ๋ฌด๊ฒฝ๊ณ„์™€์„œ ์นด๊ณต!
ํด๋Ÿฌ์Šคํ„ฐ ์•„์ด๋งฅ์—” ํ…Œ์Šคํ„ฐ๊ธฐ ํด๋ก  ๋ฐ›์•„๋’€๋Š”๋ฐ ๋‚ด ๋งฅ๋ถ์—์„  ์•ˆ ํ•ด๋†”์„œ ์ง€๊ธˆ ํ•˜๊ธฐ!

ํ…Œ์Šคํ„ฐ๊ธฐ ์–ด์ผ€ ๋Œ๋ ค์š”...?
https://velog.io/@hidaehyunlee/Libft-Test-Program

 

[Libft] Test Program

์ง์ ‘ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋“ค์˜ ์„ฑ๋Šฅ ๋ฐ ์ •ํ™•๋„ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ

velog.io

๋ชจ๋ฅด๊ฒ ์–ด์—ฌ..

mkdir libft_eval && cd libft_eval && git clone https://github.com/alelievr/libft-unit-test.git && git clone https://github.com/ska42/libft-war-machine.git && git clone https://github.com/jtoty/Libftest && git clone https://github.com/Tripouille/libftTester

์ด ์ฝ”๋“œ ์“ฐ๋ฉด ๋ฐ”๋กœ libft ํ…Œ์Šคํ„ฐ๊ธฐ ํ•œ ๋ฒˆ์— ํด๋ก ์ด ๋ฉ๋‹ˆ๋‹น~

์ผ๋‹จ ๋‚ด๊ฐ€ ๋งŒ๋“  Makefile๋กœ ๋Œ๋ ค์„œ ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋‹ค ์žก์•„๋ƒˆ๋‹ค!
๊ทผ๋ฐ ์™œ ๊ฐ‘์ž๊ธฐ ๋˜์ง€..??
์•„๊น ๋ถ„๋ช… ์•ˆ ๋Œ์•„๊ฐ”๋Š”๋ฐ..
๋‹คํ–‰ใ…‡์ด๋‹ค

KO ๋œฌ ํ•จ์ˆ˜๋“ค~



1. Libftest [ OK : ๊ทผ๋ฐ bonus๊ฐ€ ๋žœ๋ค์œผ๋กœ..]
bash grademe.sh

+ ์—†๋Š” ํ•จ์ˆ˜์žˆ์Œ

ft_atoi (์™„๋ฃŒ! white space ์ฒ˜๋ฆฌ ์ •ํ™•ํ•˜๊ฒŒ)
ft_memccpy (์‘..? ์ด ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ œ์— ์—†๋Š”๋””..?)
ft_memcpy (ํ•˜... ๊ฑ ๋‚ด๊ฐ€ ๋…ธ๋‹ต.. ํ•จ์ˆ˜ ์ด๋ฆ„์„ ft๋ฅผ ๋นผ๊ณ  ํ•˜๋‹ˆ๊นŒ ๊ณ„์† KO ๋œจ์ง€;;)
#220412 ์ด์–ด์„œ ํ•˜๋Š” ์ค‘~
ft_strnstr (์ž‘์€ while๋ฌธ์—์„œ๋„ len ๊ธธ์ด๋งŒํผ๋งŒ ๋น„๊ต!)

ft_itoa (์–ธ๋”ํ”Œ๋กœ์–ด ๊ณ ๋ ค → long long ํ˜•๋ณ€ํ™˜)
ft_putnbr_fd (write ํ•จ์ˆ˜ ํ•˜๋‚˜์— fd ์•ˆ ์”€.. (์‹ค์ˆ˜~))
ft_strtrim (๋ฌธ์ž์—ด์ด ๋ชจ๋‘ set์ธ ๊ฒฝ์šฐ ์กฐ๊ฑด์„ ์ž˜๋ชป ์„ค์ •ํ–ˆ์Œ (start == end๊ฐ€ ์•„๋‹ˆ๊ฐ€ end + 1))

๋‹ค ํ‹€๋ฆผ ๋‹ค ์—†๋Œ€ -> ๊ทผ๋ฐ ์ง€๊ธˆ์€ ๋˜ ๋จ -> ๋˜ ์•ˆ๋จ



2. libft-unit-test [์—†๋Š” ํ•จ์ˆ˜ 2๊ฐœ & M1 crash... 2๊ฐœ & calloc timeout / bonus.. ์–ด์ฉ” ๋• ๋˜๊ณ  ์–ด์ฉ” ๋• ์•ˆ๋ผ]
make -> ./run_test

ft_memset

if (b == 0) // ์ด ๋ถ€๋ถ„ ์ œ๊ฑฐ
	return (0);

ft_bzero
ft_memcpy (dst์™€ src๊ฐ€ ๋‘˜ ๋‹ค NULL์ธ ๊ฒฝ์šฐ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ → ์–ด์ฐจํ”ผ ๋‘ ๊ฐœ์˜ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์œผ๋ฉด ์ด๋ฏธ ๊ฐ™์œผ๋‹ˆ๊นŒ ๋ณต์‚ฌํ•  ํ•„์š” ์—†์Œ)

	if (dst == src) // ์ถ”๊ฐ€
		return (dst);

ft_memmove (์ด๊ฑฐ ์ถ”๊ฐ€ํ•ด์„œ crash ํ•˜๋‚˜๋Š” ํ•ด๊ฒฐ! ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” m1์„ ์“ฐ๋Š” ๋งฅ๋ถ์—์„œ๋งŒ crash ๋‚œ๋‹ค๊ณ  ํ•œ๋‹ค...)

	if (dst == src) // ์ถ”๊ฐ€
		return (dst);


# 220421 (๋งจ๋‚  ์ž ๋งŒ ์ž๊ณ  ๋จน๊ณ  ์ž๋‹ค๊ฐ€ ๋“œ๋ŽŒ ๋‹ค์‹œ ์‹œ์ž‘..)
ft_strrchr (์Œ,, ์ด๊ฒƒ๋„ ๋งฅ๋ถ์˜ ์˜ค๋ฅ˜์ธ ๋“ฏ..?)
ft_atoi (int ๋ฒ”์œ„ ๋ฐ”๊นฅ ์ˆ˜ ์ฒ˜๋ฆฌ! -> ๊ทผ๋ฐ ๋‚ด ์ฝ”๋“œ์—์„œ ์™œ long long์€ ์•ˆ ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ)
ft_calloc (calloc timeout ์ผ๋‹จ ๋ฌด์‹œ)

ft_substr

if (s == 0) // ์ถ”๊ฐ€
		return (0);

ft_strjoin

char	*ft_strjoin_protect(char const *s1, char const *s2)
{
	if (s1 == 0 && s2 == 0)
		return (0);
	else if (s1 == 0)
		return (ft_strdup(s2));
	else
		return (ft_strdup(s1));
}

ft_split

if (s == 0) // ์ถ”๊ฐ€
		return (0);

ft_strmapi

if (s == 0 || f == 0) // ์ถ”๊ฐ€
		return (0);

ft_striteri

if (s == 0 || f == 0) // ์ถ”๊ฐ€
		return ;

๋ฆฌ์ŠคํŠธ๋Š” ์ž๊พธ ๋๋‹ค๊ฐ€ ์•ˆ ๋๋‹ค๊ฐ€ ๋ฐ˜๋ณตํ•œ๋‹ค ใ… 0ใ… 

 



3. libft-war-machine [ OK ]
bash grademe.sh

ft_memcpy
ft_strnstr
ft_atoi

ft_strtrim

# 220419
ft_split (์ด๊ฑด ๋ญ..ใ…‹ใ…‹ใ…‹ ๋™์ ํ• ๋‹นํ•  ๋•Œ ์‹ค์ˆ˜.....ใ„ฑ-..)
ft_itoa
ft_putnbr_fd

ft_lstclear (์•„๋‹ˆ ์–œ ๊ทธ๋ƒฅ ์ฝ”๋“œ๊ฐ€ ์‚ฌ๋ผ์กŒ์—ˆ์–ด..)
ft_lstmap (lst๋ฅผ next๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ์•ผ ํ–ˆ๋Š”๋ฐ ์‹ค์ˆ˜ํ•จ)



4. libftTester [ OK : calloc ํ•˜๋‚˜ ko - ์›๋ž˜ ๊ทธ๋ ‡๋‹ค๋˜๋ฐ.. ]
make a


ft_strchr (c๊ฐ€ ‘t’ + 256์ธ ๊ฒฝ์šฐ ๋ฌธ์ž๋กœ๋Š” ๊ทธ๋Œ€๋กœ t์ด์ง€๋งŒ intํ˜•์ผ ๋•Œ๋Š” ๋‹ค๋ฆ„! ใ… 0ใ… )
ft_strrchr (๋งˆ์ฐฌ๊ฐ€์ง€!!)

# 220425
ft_calloc (์ด๊ฑฐ๋ฅผ ๋ฌด์‹œํ•˜๋ผ๊ณ  ํ–ˆ๋˜ ๊ฑธ๊นŒ..? ๋งˆ์ง€๋ง‰ ํ…Œ์Šคํ„ฐ๊ธฐ calloc ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค๋˜๋ฐ..)
ft_substr (๋ฌธ์ž์—ด ๊ธธ์ด๋ณด๋‹ค start๊ฐ€ ํฌ๋ฉด ๋นˆ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜, s_len์ด๋ž‘ len ๋น„๊ตํ•ด์„œ ์ž‘์€ ๊ฐ’์œผ๋กœ ํ• ๋‹น → ๋ฐ˜ํ™˜๋˜๋Š” ๋ฌธ์ž์—ด ๊ธธ์ด๋Š” s_len์ด ์ตœ๋Œ€)
ft_split -> ๋ฉ”๋ชจ๋ฆฌ ํ”„๋ฆฌ ์ถ”๊ฐ€ / ์˜ค๋งˆ๊ฐ“..... ์ด์ƒํ•œ ์‹ค์ˆ˜ํ•จ... ๋‹จ์–ด + 1 ๋งŒํผ ํ• ๋‹นํ•˜๊ณ  null ๋„ฃ์–ด์ค˜์•ผ ๋Œ€๋Š”๋ฐ + 1 ์•ˆ ํ•ด์คŒ

๋ณด๋„ˆ์Šค๋Š” ๋‹ค ok!

 



# 220424

ํ‰๊ฐ€ ํ•˜๋ฃจ ์ข…์ผ ๊ทธ๋ƒฅ ๊ธ์–ด๋‘๊ณ ..ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

์ง‘์—์„œ ์กด์ค‘ํ•˜๋ฉด์„œ ๋ฒ„ํ‹ฐ๋‹ค๊ฐ€ ์ €๋… 8์‹œ ๋ฐ˜์ฏค์— ์ œ๋Œ€๋กœ ์ผ์–ด๋‚ฌ๋Š”๋ฐ 8์‹œ 38๋ถ„์— 9์‹œ ๋ฐ˜ ํ‰๊ฐ€ ์žกํ˜€์„œ ๋ฐ”๋กœ ๊ฐœ๋‹ค๊ธ‰ํ•˜๊ฒŒ ๋›ฐ์ณ๋‚˜๊ฐ€์„œ ๋ฒ„์Šค ํƒ”๋‹ค..!

์•—์‹ธ~~~~~~
๊ทธ๋ฆฌ๊ณ  ์ถœ์ž…์นด๋“œ ๋ฐ›์•˜์–ด์šฉ~

ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์•„๋Š” ๋ถ„๋„ ๋งŒ๋‚˜์„œ ์ข€ ์–˜๊ธฐํ•˜๋‹ค๊ฐ€ ์ง‘์™”๋‹น
์–ผ๋ฅธ libft ๊ณผ์ œ ๋๋‚ด์•ผ์ง€ ใ… .ใ… 

๋‹คํ–ˆ๋‹ค...!!
๋ฆฌ์ŠคํŠธ ๋ถ€๋ถ„์€ ๊ณ„์†๋๋‹ค ์•ˆ ๋๋‹ค ํ•˜๋Š”๋ฐ.. ๊ฑ ๋‚˜์ค‘์— ๋ˆ„๊ตฐ๊ฐ€ํ•œํ…Œ ๋ฌผ์–ด๋ณด๊ณ  ๋„˜๊ฒจ์•ผ์ง€ ^.^

 


# 220507

 

์ผ๋‹จ ๋ฆฌ์ŠคํŠธ MISSING ๋œจ๋Š” ๊ฑฐ๋Š” ํ…Œ์Šคํ„ฐ๊ธฐ์˜ ์˜ค๋ฅ˜์˜€๋‹ค.. ์–ด์ฉ” ๋• ๋˜๊ณ  ์–ด์ฉ” ๋• ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.. ํ•˜ํ•˜..

์˜ค๋Š˜์€ ํ•จ์ˆ˜ ์„ ์–ธํ•  ๋•Œ static ์„ ์–ธ ์ˆ˜์ •ํ•ด์ฃผ๊ณ ! ๊ฐœํฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ€์„œ ํ…Œ์Šคํ„ฐ๊ธฐ 4๊ฐœ ์‹น ๋‹ค ๋Œ๋ ค๋ณด๊ณ  ์ œ์ถœํ•˜๊ณ  ๋ฐ”๋กœ ํ‰๊ฐ€ 3๊ฐœ ์žก์•˜๋‹ค

์„ธ๋ถ„ ๋‹ค ๋‚ด ์ฝ”๋“œ๋ฅผ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํžˆ ๋ด์ฃผ์‹œ๊ณ  ์งˆ๋ฌธ๋„ ๋งŽ์ด ํ•ด์ฃผ์…”์„œ.. ์—ด์‹ฌํžˆ ๋จธ๋ฆฌ ๊ตด๋ ค์„œ ๋Œ€๋‹ตํ–ˆ๋‹ค..

(๊ทผ๋ฐ ์ง„์งœ ๋‹ค๋“ค ์„ค๋ช…์„ ์ž˜ํ•ด์ฃผ์…”์„œ ์™„์ „ ์ƒˆ๋กญ๊ฒŒ ๋งŽ์€ ๊ฒƒ๋“ค์„ ์•Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค ํ•ดํ—ค~ ์ œ์ผ ์‹ ๊ธฐํ–ˆ๋˜ ๊ฑด makefile ๋งŒ๋“ค ๋•Œ ํ—ค๋” ์ˆ˜์ •๋˜๋ฉด make ์ด๋ฏธ ํ•œ ์ƒํƒœ์—์„œ ๋˜ makeํ•˜๋ฉด ๋˜! make ๋˜๊ฒŒ ํ•˜๊ธฐ!)

 

ํ•œ ๋ฒˆ์— ํ†ต๊ณผํ•ด์„œ ๊ธฐ๋ถ„ ์งฑ์งฑ ์ข‹๋‹ค >.<