Go Down

Topic: Bug do sprintf? (Read 834 times) previous topic - next topic

evandro_net

Olá a todos,

Ao executar as seguintes instruções:

Quote

  char buf[100];
  long d1=1, d2=2, d3=3, d4=4;
  sprintf(buf,"Uptime %d days %2.2d:%2.2d:%2.2d",d1,d2,d3,d4);
  Serial.println(buf);


Ela sempre retorna a seguinte mensagem:

Quote
Uptime 1 days 00:02:00


E eu esperava por Uptime 1 days 02:03:04 !!!

Sei que com int funciona normalmente, porém com long mostra diferente.

Será que isso é um bug do sprintf?

[]'s
Evandro
Thanks,
Evandro

bubulindo

Experimenta fazer um cast para int na função.
Code: [Select]
sprintf(buf,"Uptime %d days %2.2d:%2.2d:%2.2d",(int)d1,(int)d2,(int)d3,(int)d4);

ou então tirar a precisão:
sprintf(buf,"Uptime %d days %2d:%2d:%2d",d1,d2,d3,d4);


This... is a hobby.

Senso

Quando usa longs use L ou LU para long unsigned em vez do d que é para doubles(numeros em virgula flutuante).

bubulindo

Ou até usar int, uma vez que o dia não tem mais de 65356 horas. :)
This... is a hobby.

evandro_net

Thanks,
Evandro

Go Up