Como imprimir um endereço de ponteiro sem printf
Estou fazendo um exercício no qual preciso imprimir a memória (endereço) de um ponteiro. Seria fácil fazê-lo comprintf("%p", ..)
mas não tenho permissão para usá-lo.
Você sabe como posso obter o endereço sem usarprintf()
? A única função que posso usar é 'write'.
Aqui está a declaração do meu exercício:
Escreva uma função que leva(const void *addr, size_t size)
e exibe a memória como no exemplo. Sua função deve ser declarada da seguinte maneira:
void print_memory(const void *addr, size_t size);
$ cat main.c
void print_memory(const void *addr, size_t size);
int main(void)
{
int tab[10] = {0, 23, 150, 255,
12, 16, 21, 42};
print_memory(tab, sizeof(tab));
return (0);
}
$ gcc -Wall -Wall -Werror main.c print_memory.c && ./a.out | cat -e
0000 0000 1700 0000 9600 0000 ff00 0000 ................$
0c00 0000 1000 0000 1500 0000 2a00 0000 ............*...$
0000 0000 0000 0000 ........$