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.

Foi útil?

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
scroll top