Pages: [1]   Go Down
Author Topic: Bug do sprintf?  (Read 680 times)
0 Members and 1 Guest are viewing this topic.
Brazil
Offline Offline
Newbie
*
Karma: 0
Posts: 11
Make everything as simple as possible, but not simpler.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Thanks,
Evandro

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3225
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Experimenta fazer um cast para int na função.
Code:
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);


Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Portugal
Offline Offline
God Member
*****
Karma: 6
Posts: 962
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3225
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ou até usar int, uma vez que o dia não tem mais de 65356 horas. smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brazil
Offline Offline
Newbie
*
Karma: 0
Posts: 11
Make everything as simple as possible, but not simpler.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Obrigado a todos!
Logged

Thanks,
Evandro

Pages: [1]   Go Up
Jump to: