#include #include #include #include #include static int write_stdout(const char *token, int length) { int rc; int bytes_written = 0; do { rc = write(1, token + bytes_written, length - bytes_written); if (rc < 0) return rc; bytes_written += rc; } while (bytes_written < length); return bytes_written; } char* convert(unsigned int num, int base) { static char Representation[] = "0123456789ABCDEF"; static char buffer[50]; char *ptr; ptr = &buffer[49]; *ptr = '\0'; do { *--ptr = Representation[num % base]; num/=base; } while (num != 0); return ptr; } void iocla_printf(const char *format, ...) { va_list args; va_start(args, format); unsigned int i; char* specificator; char* s; for (specificator = format; *specificator != '\0'; specificator++) { while (*specificator != '%') { putchar(*specificator); } specificator++; switch (*specificator) { case 'd': i = va_arg(args,int); if (i<0) { i = -i; putchar('-'); } puts(convert(i,10)); break; break; case 'u': i = va_arg(args,int); puts(convert(i,10)); break; break; case 'x': i = va_arg(args, unsigned int); puts(convert(i,16)); break; break; case 'c': i = va_arg(args, int); putchar(i); break; break; case 's': s = va_arg(args, char *); puts(s); break; break; default: break; } } //return 0; } int main() { //printf("%d\n", iocla_printf("Test blaa balaba %d", 5, 7 ,8)); iocla_printf("test, nr int: %d, unsigned: %u, hexa: %x, char: %c, string: %s", 15, 2, 4, 'b', "mancare"); printf("\n"); return 0; }