Como imprimir espaço em uint64_t (C)
Pergunta
Quando eu tento isso:
#include <stdio.h>
#include <inttypes.h>
int main (int argc, char **argv)
{
uint64_t key = 0xf0000000ffffffff;
printf ("key=%" PRIx64, key, "\t\n %" PRIx64, "\n", key);
}
Ele imprime key=f0000000ffffffff
;todos os espaços em branco são removidos.Como posso imprimi-los?estou usando gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
.
Solução
A string de formato que você fornece para printf
é apenas
"key=%" PRIx64
Todo o resto são argumentos para a string de formato, e como a string de formato contém apenas um especificador de conversão, o primeiro argumento é impresso e o restante é descartado.
Eu acho que você quer, por exemplo.
printf("key=%" PRIx64 "\t\n %" PRIx64 "\n", key, key);
Observe a falta de vírgulas na string de formato.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow