Encoders
>
More...
>
C
>
Program
/* Function minprintf(), a minimal version of printf(). */
#include <stdio.h>
#include <stdarg.h>
#include <ctype.h>
void minprintf(char *fmt, ...);
main()
{
minprintf("name:%s\nage:%d\ngender:%c\n","bob",21,'M');
}
void minprintf(char *fmt, ...)
{
va_list ap;
char *p, *sval, format[10];
int i,ival;
double dval;
va_start(ap,fmt);
for(p=fmt; *p; p++)
{
if(*p!='%')
{
putchar(*p);
continue;
}
i=0;
format[i]=*p;
while(!isalpha(*++p)&&*p)
format[++i]=*p;
format[++i]=*p;
format[++i]='\0';
switch(*p)
{
case 'c':
case 'd':
case 'i':
ival=va_arg(ap,int);
printf(format,ival);
break;
case 'u':
case 'o':
case 'x':
case 'X':
ival=va_arg(ap,unsigned);
printf(format,ival);
break;
case 'f':
case 'e':
case 'E':
case 'g':
case 'G':
dval=va_arg(ap,double);
printf(format,dval);
break;
case 's':
for(sval=va_arg(ap,char *); *sval; sval++)
putchar(*sval);
break;
default:
putchar(*p);
break;
}
}
va_end(ap);
}
|