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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <stdarg.h>
#include "argument_printer.h"

// prints the digit, returning true if it printed, false if invalid
int print_argument_helper(int digit) {
    int ret = 0;
    if (digit >= 0 && digit < 10)
        fputc(48 + digit, stdout);
            ret = 1;
    if (digit >= 10 && digit < 36)
        fputc(97 + digit, stdout);
            ret = 1;
    return ret;
}

int print_argument_helper2(int digit) {
    int ret = 0;
    if (digit >= 0 && digit < 10)
        fputc(48 + digit, stdout);
            ret = 1;
    if (digit >= 10 && digit < 36)
        fputc(87 + digit, stdout);
            ret = 1;
    return ret;
}

char* invalidDigit = "Invalid Digit";
int temp1;

void print_arguments(char* format, ...) {
    va_list arguments;
    va_start(arguments, format);
    char* temp2 = "default";
    char temp3 = '!';

    int ch = 0;
    while (format[ch] != 0) {
        switch(format[ch]) {
            case 100:
                temp1 = (int)va_arg(arguments, int);
                if (!print_argument_helper(temp1))
                    fputs(invalidDigit, stdout);
                fputc('\n', stdout);
                break;
            case 'd':
                double temp4 = (double)va_arg(arguments, double);
                temp1 = (int)temp4;
                if (!print_argument_helper(temp1))
                    fputs(invalidDigit, stdout);
                fputc('\n', stdout);
                break;

            case 0x63:
                temp3 = (char)va_arg(arguments, int);
                fputc(temp3, stdout);
                fputc('\n', stdout);
                break;

            case 's':
                temp2 = (char*)va_arg(arguments, char*);
                fputs(temp2, stdout);
                fputc('\n', stdout);
                break;

            default:
                fputc(format[ch], stdout);
                fputc('\n', stdout);
        }
        ch++;
    }

    va_end(arguments);
}

© Copyright 2024 Alexander J. Quinn & David Burnett         This content is protected and may not be shared, uploaded, or distributed.