How to use variadic function that get different type of numbers in C

1 Answer

0 votes
#include <stdio.h>          
#include <stdarg.h>

// int function_name(data_type variable_name, ...);

void PrintMix(const char* fmt, ...) {
    va_list args;
    va_start(args, fmt);

    while (*fmt != '\0') {
        if (*fmt == 'd') {
            int i = va_arg(args, int);
            printf("%d\n", i);
        }
        else if (*fmt == 'c') {
            char ch = va_arg(args, int);
            printf("%c\n", ch);
        }
        else if (*fmt == 'f') {
            double d = va_arg(args, double);
            printf("%lf\n", d);
        }
        else if (*fmt == 's') {
            char* s = va_arg(args, char*);
            puts(s);
        }
        fmt++;
    }

    va_end(args);
}

int main() {
    PrintMix("fdcfs", 3.14, 2347, 'z', 45.837, "c programming");

    return 0;
}




/*
run:
 
3.140000
2347
z
45.837000
c programming
 
*/

 



answered Dec 7, 2022 by avibootz
...