Dobrý den, chtěl bych se zeptat, jak zprovoznit kód níže. Chtěl bych porovnat, zdali argument je větší jako 1. Zkoušel jsem to porovnat i s ASCII hodnotou a i tak to nefuguje. Děkuji za jakoukoliv pomoc
if (argv[2] >1)
zkusit zkonvertovat na číslo např pomocí sscanf a testovat návratovou hodnotu
hu
u funkcí printf, fprintf a sprintf můžeš určit počet des. míst.http://www.cplusplus.com/reference/cstdio/printf/ vypadalo by to takto:
float cislo;
printf("%.2f", cislo);
hu
Jde to i jako manipulace s řetězci:
1. Najdeš des. oddělovač v řetězci např. funkcí strchr
2. Posuneš ukazatel na třetí znak za oddělovačem des. míst a přepíšeš ho na 0x00, zde musíš kontrolovat, zda má řetězec tolik znaků
hu
#13 hlucheucho
Se zápisem do souborů a výpisem z nich zrovna teď dělám ve škole, děláme to přes fstream (vyžaduje danou knihovnu), na vypsání do stringu pak používám sstream. Moc se mi u toho nelíbí, že si člověk musí vytvářet objekty, aby vůbec funkci mohl používat (tedy třeba ifstream input_file, nebo stringstream prevedeny_retezec), pokud to chápu správně, sprintf a fprintf tuto tvorbu nevyžadují.
http://stackoverflow.com/questions/11226143/formatting-output-in-c
cout umí formátování také, ale působí to na mne "odstrašujícím" dojmem.
Pro fprintf musíš mít otevřený soubor, funkci předáváš jako parametr ukazatel FILE*. Pro sprintf potřebuješ mít cílový řetězec, funkci předáváš jako parametr ukazatel char*.
Objekty mohou v sobě nést užitečné funkce, sám si ošetří alokování paměti podle délky řetězce, postará se o uvolnění paměti při svém zániku, ... , ale nese to sebou i nevýhody, třeba větší objem kódu, vyšší nároky na výkon CPU, zabere více paměti... Právě ty nevýhody mohou třeba na jednočipu převážit a vést k použití klasických C funkcí nebo dokonce k tvorbě vlastních funkcí které mají jen fragment chování které by měla C funkce (na 8051 jsem toto dělal u funkce sprintf, měla strašný nároky na paměť)
hu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku