void Myprintf(char *,...);
char *convert(unsigned int num, int base);
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
Myprintf(" brtbr %d fsadf", 9);
return 0;
}
void Myprintf (char* format, ...){
char *traverse;
unsigned int arg;
char * p = (((char*)&format) + sizeof(format));
for(traverse=format; *traverse != '\0'; traverse++){
if (*traverse == '%') {
traverse++;
if (*traverse == 'd') {
arg = *((int*)p);
p += sizeof(int);
write(1,convert(arg,10),8);
traverse++;
}
}
write(1,(void *) traverse,1);
}
}
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);
}
Dlaczego w miejscu gdzie powinna być 9 dostaje losowe inty?