[Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)

2025. 6. 2. 18:02ยท๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus

srtlcpy

size_t    ft_strlcpy(char *dst, const char *src, size_t size)

๋ฌธ์ž์—ด์„ ๋ณต์‚ฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. src๋ฅผ dst์— ๋ณต์‚ฌํ•œ๋‹ค.

์ตœ๋Œ€ size - 1 ๋ฐ”์ดํŠธ๊นŒ์ง€๋งŒ ๋ณต์‚ฌํ•˜๊ณ , ๋งˆ์ง€๋ง‰์— \0์„ ๋„ฃ๋Š”๋‹ค.

src์˜ ์ด ๊ธธ์ด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. (์‹ค์ œ๋กœ ๋ณต์‚ฌ๋œ ๊ธธ์ด ์•„๋‹˜)

 

strlcat

size_t    ft_strlcat(char *dst, const char *src, size_t size)

๋ฌธ์ž์—ด์„ ๋ถ™์ด๋Š” ํ•จ์ˆ˜์ด๋‹ค. dst ์— src ๋ฌธ์ž์—ด์„ ๋ถ™์ธ๋‹ค. (concat)

๋ถ™์ผ ๋•Œ dst์˜ ํฌ๊ธฐ๊ฐ€ size๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ , dst๋Š” \0๋กœ ๋๋‚˜๋„๋ก ํ•œ๋‹ค.

๋ฆฌํ„ด ๊ฐ’์€ strlen(dst) + strlen(src)์œผ๋กœ, ์›๋ž˜ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋˜ ์ด ๊ธธ์ด์ด๋‹ค.

  • dst: ๋ถ™์—ฌ์งˆ ๋Œ€์ƒ ๋ฌธ์ž์—ด. ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๊ธฐ์— ์ €์žฅ๋œ๋‹ค.
  • src: ๋ถ™์ผ ๋ฌธ์ž์—ด (์ฝ๊ธฐ ์ „์šฉ)
  • (dst)size: dst ์ „์ฒด ํฌ๊ธฐ (๊ธฐ์กด ๋ฌธ์ž์—ด + ๋ถ™์ผ ๋ฌธ์ž์—ด + \0)

 

strchr

char    *ft_strchr(const char *s, int c)

๋ฌธ์ž์—ด์—์„œ ์ฃผ์–ด์ง„ ๋ฌธ์ž๋ฅผ ๋’ค์—์„œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

๐Ÿšจ ๋ฌธ์ž์—ด์˜ ์ข…๋ฃŒ ๋ฌธ์ž \0๋„ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์—, c == '\0'์ด๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์˜ ๋์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

 

strnstr

char    *ft_strnstr(const char *big, const char *little, size_t len)

๋ฌธ์ž์—ด big์—์„œ ์ตœ๋Œ€ len๋ฐ”์ดํŠธ๊นŒ์ง€๋งŒ ํ™•์ธํ•˜๋ฉด์„œ ๋ฌธ์ž์—ด little์„ ์ฐพ๋Š”๋‹ค.

์ฐพ์œผ๋ฉด ์ฒซ ์œ„์น˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ชป ์ฐพ์œผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

little์ด ๋นˆ ๋ฌธ์ž์—ด์ด๋ฉด big์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

substr

char    *ft_substr(char const *s, unsigned int start, size_t len)

๋ฌธ์ž์—ด์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

๐Ÿšจ ๋ฌธ์ž์—ด์„ ๋๊นŒ์ง€ ๋‹ค ๋ชป ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ

s = "HelloWorld";        // s_len = 10
start = 7;               // 'o'
len = 10;                // ์ตœ๋Œ€ 10๊ธ€์ž ์š”์ฒญ

// 
//  → 

์‹ค์ œ ๋‚จ์€ ๊ธ€์ž๋Š” s[7] ~ s[9] → "o", "r", "l", "d" = ์ด 3๊ธ€์ž์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์š”์ฒญํ•œ 10๊ธ€์ž ์ค‘ 3๊ธ€์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด ๊ฒฝ์šฐ, len = s_len - start(3)์œผ๋กœ ์ค„์—ฌ์„œ "orld"๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐Ÿšจ start๊ฐ€ ๋ฌธ์ž์—ด ๊ธธ์ด๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ

s = "abc";               // s_len = 3
start = 10;              // ๋ฒ”์œ„ ๋ฐ–
len = 5;

์ด ๊ฒฝ์šฐ, ๋นˆ ๋ฌธ์ž์—ด("")์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

strtrim

char    *ft_strtrim(char const *s1, char const *set)

๋ฌธ์ž์—ด ์ค‘ ํŠน์ • ๋ฌธ์ž๋ฅผ ์•ž๊ณผ ๋’ค์—์„œ ์ž๋ฅด๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ณดํ†ต์€ ๊ณต๋ฐฑ์„ ์—†์• ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

  1. ์•ž์—์„œ๋ถ€ํ„ฐ set์— ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉด start++
  2. ๋’ค์—์„œ๋ถ€ํ„ฐ set์— ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉด end--
  3. start ~ end ์‚ฌ์ด๋งŒ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ ๋ฌธ์ž์—ด๋กœ ํ• ๋‹น ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐Ÿšจ ์ž˜๋ผ๋‚ด๊ณ  ๋‚จ์€ ๊ฒŒ ์—†์„ ๋•Œ (start > end์ผ ๋•Œ)

 

๊ทธ๋ƒฅ NULL์„ ๋ฆฌํ„ดํ•˜๋ฉด ์•ˆ ๋˜๊ณ , return (ft_strdup(""));์„ ํ•ด์•ผํ•œ๋‹ค.

ํ‘œ์ค€ strtrim()์˜ ์ •์˜์— ๋”ฐ๋ฅด๋ฉด, ์ด ๊ฒฝ์šฐ์—๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

 

strmapi & striteri

char    *ft_strmapi(char const *s, char (*f)(unsigned int, char))
void    ft_striteri(char *s, void (*f)(unsigned int, char*))

๋‘ ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋ฌธ์ž์— ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

ft_strmapi๋Š” ์ƒˆ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ft_striteri๋Š” ๊ธฐ์กด ๋ฌธ์ž์—ด์„ ์ง์ ‘ ์ˆ˜์ •ํ•œ๋‹ค.

'๐Ÿƒโ€โ™€๏ธ Activities > 42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ft_printf][C] ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜  (0) 2025.06.02
[Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)  (0) 2025.06.02
[Libft][C] memory ํ•จ์ˆ˜ ๊ตฌํ˜„ (memset / memmove / memchr / bzero / calloc)  (0) 2025.06.02
[C] void & void *ํƒ€์ž… / ํฌ์ธํ„ฐ ์—ฐ์‚ฐ  (0) 2025.06.02
[Makefile] PHONY  (1) 2025.05.30
'๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ft_printf][C] ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜
  • [Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)
  • [Libft][C] memory ํ•จ์ˆ˜ ๊ตฌํ˜„ (memset / memmove / memchr / bzero / calloc)
  • [C] void & void *ํƒ€์ž… / ํฌ์ธํ„ฐ ์—ฐ์‚ฐ
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (56)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (28)
        • C++ (28)
      • ๐Ÿ“ Study (6)
        • Web Front-End Basic (6)
      • ๐Ÿ’ป CS (2)
        • ๐Ÿ“˜ Dev Book (2)
        • ๐Ÿ“ฐ IT News & Research (0)
      • ๐Ÿƒ‍โ™€๏ธ Activities (18)
        • 42 Cursus (18)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    CS
    ์ •๋ ฌ
    dfs
    ๋งต
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    .h
    HTML
    ๋ฐฑํŠธ๋ž˜ํ‚น
    dynamic programming
    JavaScript
    unity
    La Piscine
    BFS
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฐฑ์ค€
    VR
    swea
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ํ—ค๋”ํŒŒ์ผ
    C
    makefile
    42๊ฒฝ์‚ฐ
    github
    knapsack
    git
    CSS
    ๊ตฌํ˜„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”