Funkce sprintf

Ahoj, mám problém s funkcí sprintf. Potřebuju zaokrouhlit realné číslo a po té ho “vytisknout” do řetězce pom a dále ho potom zpracovat. Bohužel do řetězce se mi uloží úplný nesmysl. Nevíte čím by to mohlo být?
moc díky za rady

#include <stdio.h>
int main(void)
{
  double f1 = 5.1421;
  double f2 = 5.1451;
  double f;
  char pom[20];

  sprintf(pom, "%.2f", f1);
  ...
}

hmm… kdyz to prelozim pod win32, tak to maka… V pom je “5.14”
Jak zjistujes, co se ti tam ulozi?

Vkladej na zacatek kodu jeste “#include <avr/io.h>”, kde jsou popsany IO registry.

asi uz vim… Kdyz se podivas do avr-libc-user-manual.pdf (najdes ho ve winavr), doklikas se az k textu (str.68):

tzn. pokud potrebujes praci s floating point, musis na to nastavit prekladac…
Radek “-Wl,-u,vfprintf -lprintf_flt -lm” zkopiruj do “Linker options” (project configuration options -> custom options -> linker options)
sprintf(pom, “%.2f”, f1); trva 2687 strojovejch cyklu :slight_smile: ta funkce je velka 3kB…

btw. double nema moc vyznam… “float and
double are 32 bits (this is the only supported floating point format)”

Ahoj, díky zkusím to a uvidím. Jinak jsem to zjišťoval v AVR studiu