Go Down

Topic: Bug do sprintf? (Read 923 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy