Exercise 7.3 - minprintf to handle facilities of printf

Question

Revise minprintf to handle more of the other facilities of printf.

/* minprintf: minimalistic printf function */
#include<stdarg.h>
void minprintf(char *fmt,...);

int main(void)
{
    char *a="Hello,World";
    minprintf("%s",a);
    
    return 0;
}

void minprintf(char *fmt,...)
{
    va_list ap; /* points to each unnamed arg in turn */
    char *p,*sval;
    int ival;
    double dval;

    va_start(ap,fmt);   /* make ap point to 1st unnamed arg */
    
    for(p=fmt;*p;p++)
    {
        if(*p != '%')
        {
            putchar(*p);
            continue;
        }

        switch(*++p)
        {
            case 'd':
                ival = va_arg(ap,int);
                printf("%d",ival);
                break;
            case 'f':
                dval = va_arg(ap,double);
                printf("%f",dval);
                break;
            case 's':
                for(sval = va_arg(ap,char *);*sval;sval++)
                    putchar(*sval);
                break;
            default:
                putchar(*p);
                break;
        }
    }
    va_end(ap); /* clean up when done */
}


    

Run this
Comments by Disqus