36 lines
688 B
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);
|
|
}
|