void printf(const char *format, ...) { char buf[20], **arg = (char **)&format; int c; arg++; while((c = *format++)){ if(c != '%') putch(c); else{ char *p; c = *format++; switch(c) { case 'd': case 'u': itoa (buf, 10, *((int *) arg++)); putsnocr(buf); break; case 'c': p = arg++; putsnocr(p); break; case 'x': itoa (buf, 16, *((int *) arg++)); putsnocr(buf); break; case 's': p = *arg++; if(!p) p = "(null)"; putsnocr(p); break; default: putch(*((int *) arg++)); break; } } } return; }