[ft_printf][C] ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜

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

๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜ va_start, va_arg, va_copy, va_end

๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜๋Š” ์ธ์ž ๊ฐœ์ˆ˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋งŒํผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ, printfํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

printf("ํ•ฉ์€ %d์ž…๋‹ˆ๋‹ค\n", a + b);
printf("%s %d %f\n", "์ˆซ์ž:", 3, 2.5);
  • va_start(ap, param): ๊ฐ€๋ณ€ ์ธ์ž ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ํ˜ธ์ถœํ•œ๋‹ค. ap๋Š” va_list ํƒ€์ž… ๋ณ€์ˆ˜, param์€ ๊ณ ์ • ์ธ์ž ์ค‘ ๋งˆ์ง€๋ง‰ ์ธ์ž์ด๋‹ค.
  • va_arg(ap, type): ์ธ์ž ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ap์—์„œ ํ•˜๋‚˜ ๊บผ๋‚ด๊ณ , ๊ทธ ๋‹ค์Œ ๊ฑธ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ์ด๋™ํ•œ๋‹ค.
  • va_copy(dest, src): va_list๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ™์€ ์ธ์ž ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‘ ๋ฒˆ ์ฝ์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • va_end(ap): ๊ฐ€๋ณ€ ์ธ์ž ์ฒ˜๋ฆฌ๋ฅผ ๋๋‚ผ ๋•Œ ํ˜ธ์ถœํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ๋ฅผ ๋„์™€์ค€๋‹ค.

 

#include <stdio.h>
#include <stdarg.h> // ์ด๊ฑฐ ๊ผญ ํ•„์š”!

// ์ˆซ์ž๋ฅผ n๊ฐœ ๋ฐ›์•„์„œ ํ•ฉ์น˜๋Š” ํ•จ์ˆ˜
int sum(int count, ...)
{
    va_list ap;           // ๊ฐ€๋ณ€ ์ธ์ž๋ฅผ ๊ด€๋ฆฌํ•  ๋ณ€์ˆ˜
    int result = 0;

    va_start(ap, count);  // ๊ฐ€๋ณ€ ์ธ์ž ์‹œ์ž‘ (count ๋‹ค์Œ ์ธ์ž๋ถ€ํ„ฐ ์ฝ๊ฒ ๋‹ค๋Š” ๋œป)

    for (int i = 0; i < count; i++) {
        result += va_arg(ap, int);  // ์ธ์ž๋ฅผ ํ•˜๋‚˜ ์ฝ์–ด์„œ ๋”ํ•จ (์ž๋ฃŒํ˜• ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ)
    }

    va_end(ap);           // ๊ฐ€๋ณ€ ์ธ์ž ๋
    return result;
}

int main()
{
    printf("%d\\n", sum(3, 10, 20, 30));  // ์ถœ๋ ฅ: 60
    printf("%d\\n", sum(5, 1, 2, 3, 4, 5)); // ์ถœ๋ ฅ: 15
    return 0;
}
  1. va_list ap ์„ ์–ธ
  2. va_start(ap, ๋งˆ์ง€๋ง‰ ๊ณ ์ •์ธ์ž) ํ˜ธ์ถœ
  3. va_arg(ap, ํƒ€์ž…)์œผ๋กœ ์ธ์ž ํ•˜๋‚˜์”ฉ ์ฝ์Œ
  4. ๋‹ค ์ฝ๊ณ  ๋‚˜๋ฉด va_end(ap) ํ˜ธ์ถœ

 

์ฐธ๊ณ  ์ž๋ฃŒ

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

C ์–ธ์–ด ์ฝ”๋”ฉ ๋„์žฅ: 66.1 ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ

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

[get_next_line][C] ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(File Descriptor)  (0) 2025.06.02
[ft_printf][C] printf ํฌ๋งท ์ถœ๋ ฅ ์˜ˆ์‹œ (%p, %u, %x, %X)  (0) 2025.06.02
[Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)  (0) 2025.06.02
[Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)  (0) 2025.06.02
[Libft][C] memory ํ•จ์ˆ˜ ๊ตฌํ˜„ (memset / memmove / memchr / bzero / calloc)  (0) 2025.06.02
'๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [get_next_line][C] ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(File Descriptor)
  • [ft_printf][C] printf ํฌ๋งท ์ถœ๋ ฅ ์˜ˆ์‹œ (%p, %u, %x, %X)
  • [Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)
  • [Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (65)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (28)
        • C++ (28)
      • ๐Ÿ“ Study (1)
        • React (1)
      • ๐Ÿ’ป CS (2)
        • ๐Ÿ“˜ Dev Book (2)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[ft_printf][C] ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜
์ƒ๋‹จ์œผ๋กœ

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