funkce sprintf
Moderátor: Moderátoři
funkce sprintf
volatile double teplota, napeti;
char tt2[100];
.
.
delka = sprintf(&tt2[0],"Napeti = %1.2f V Teplota = %2.1f C", napeti, teplota);
Samotná instrukce sprintf() neprotestuje, uloží řetězec do pole tt2, v proměnné délka je správný počet znaků řetězce. Místo desetinných čísel jsou tam ale ? (otazníky)
Do proměnných jsem zkoušel v debuggeru zapisovat různá čísla celá i desetinná ale vyloudit správný text se mě nepodařilo.
Nevíte někdo, kde je chyba?
Díky Jirka
delka = sprintf(&tt2[0],%s%1.2f%s%2.1f%s,"Napeti = ",napeti," V Teplota = ",teplota," C");
ale asi to bude to samé.
zkusil bych případně nakrmit sprintf místo floatem integerem, kompilátor float nemusí umět, v prostředí, co používám pro jiné MCU, se musí kompilátoru a linkeru nastavit parametry, aby sprintf uměl float a pak je výsledný kód podstatně větší. Pro menší velikost výsledného kódu jsem si musel desetinné číslo sestavit ze dvou integerů sám.