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.