Files
first-repo/minprintf.c

36 lines
688 B
C

#include <stdio.h>
#include <stdarg.h>
void minprintf(char *fmt, ...) {
va_list arg_pointer;
char *p, *sval;
int ival;
double dval;
va_start(arg_pointer, fmt);
for (p = fmt; *p; p++) {
if (*p != '%') {
putchar(*p);
continue;
}
switch(*++p) {
case 'd':
ival = va_arg(arg_pointer, int);
printf("%d", ival);
break;
case 'f':
dval = va_arg(arg_pointer, double);
printf("%f", dval);
break;
case 's':
for(sval = va_arg(arg_pointer, char*); *sval; sval++)
putchar(*sval);
break;
default:
putchar(*p);
break;
}
}
va_end(arg_pointer);
}