w3resource

C programming: Example of C custom printf() function

Implementing a custom printf() function in C.

Here is an example implementation of a custom printf() function that supports a subset of format specifiers (Character, String, Integer and Double).

Note: This implementation does not support all of the format specifiers that printf() does, and it does not implement all of the functionality of printf().

Code:

#include <stdio.h>
#include <stdarg.h>
void custom_printf(const char* format, ...) {
    va_list arg_list;
    va_start(arg_list, format);
    while (*format != '\0') {
        if (*format == '%') {
            format++;
            if (*format == 'd') {
                int val = va_arg(arg_list, int);
                printf("%d", val);
            }
            else if (*format == 's') {
                char* val = va_arg(arg_list, char*);
                printf("%s", val);
            }
            else if (*format == 'c') {
                char val = va_arg(arg_list, int);
                printf("%c", val);
            }
            else if (*format == 'f') {
                double val = va_arg(arg_list, double);
                printf("%f", val);
            }
            format++;
        }
        else {
            printf("%c", *format);
            format++;
        }
    }
    va_end(arg_list);
}
int main() {
    int x = 100;
    double d = 23.56;
    char c = 'C';
    char* str = "Custome printf() function!";
    custom_printf("Example of C custom printf() function:\n");
    custom_printf("\nCharacter: %c\n", c);
	custom_printf("String: %s\n", str);
	custom_printf("Integer: %d\n", x);
    custom_printf("Double: %f\n", d);        
    return 0;
}

Output:

Example of C custom printf() function:
Character: C
String: Custome printf() function!
Integer: 100
Double: 23.560000

This implementation uses va_list, va_start(), va_arg(), and va_end() from the header to support variable argument lists. It then uses a loop to iterate through the format string, handling each format specifier as it is encountered.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/c-programming-exercises/c-snippets/implementing-custom-printf-function-in-c.php