1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#include <stdarg.h>

// you are free to copy/adapt this example

int _count_characters_in_final_string(const char* format, va_list args) {
    // will be very similar to mintf
    // fputc -> counter++
    return 0;
}

void _fill_string_with_characters(const char* format, va_list args,
                                  char* output) {
    // will be very similar to mintf
    // fputc -> output[i] = ch;
    //          i++;
}

char* smintf(const char* format, ...) {
    va_list orig_args, args_count_str, args_fill_str;
    va_start(orig_args, format);
    va_copy(args_count_str, orig_args);
    va_copy(args_fill_str, orig_args);

    int num_of_chars = _count_characters_in_final_string(
            format_str, args_count_str);
    char* output_str = malloc(num_of_chars * sizeof(*output_str));
    _fill_string_with_characters(format, args_fill_str, output_str); 

    va_end(orig_args);
    va_end(args_count_str);
    va_end(args_fill_str);
    return output_str;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2022 Alexander J. Quinn         This content is protected and may not be shared, uploaded, or distributed.