Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pomoc s Warningem

Aktivity
Avatar
Tomáš Vondra:6.9.2016 21:22

Ahoj, mam problém s jednoduchým programem v C. Učitelce hází warning (mně ne) a nevím, jak ho opravit. Chybu mi i popsala viz níže.

  === Projekt, Debug ===

\main.c||In function 'main':|
\main.c|129|war­ning: 'fw' may be used uninitialized in this function [-Wuninitialized]|

  === Build finished: 0 errors, 1 warnings (0 minutes, 0 seconds) ===

Varování opravíte nejlépe tak, že výstupní soubor otevřete před do {} while cyklem ve funkci main() a zavřete za tímto do {} while cyklem. Z funkce vypocet_zivin() se parametr fw musí předávat dále do funkce tisk(), kde už lokální proměnná typu FILE* a otevírání a uzavírání souboru nebude.

I tak si ale nevím rady, není tu někde ochotný? Odměna jistá. Link na program tady: http://leteckaposta.cz/706684659

 
Odpovědět
6.9.2016 21:22
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Tomáš Vondra
Martin Dráb:6.9.2016 22:24

Problém je zřejmě v tom, že ve funkci main neinicializuješ proměnnou fw, kteroužto pak předáváš do funkce vypocet_zivin. Statická analýza kódu použitá překladačem zřejmě nevidí, že tento parametr ve funkci vypocet_zivin stejně nepoužíváš, takže fakt, že jsi jej neinicializoval, v tomto případě nevadí.

Takže nejjednodušší řešení je do vypocet_zivin žádný parametr nedávat a proměnnou fw ve funkci main úplně zrušit.

Další výhrada paní učitelky je k tomu, že při každém tisku (funkce tisk) otevíráš a zavíráš výstupní soubor. Lepší by bylo výstupní soubor otevřít na začátku programu, pak do něj zapisovat (případně používat po zápisu fflush(fw), aby data nezůstávala viset ve vyrovnávací paměti) a na konci programu jej uzavřít. ALe to s tím varováním nesouvisí.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
6.9.2016 22:24
2 + 2 = 5 for extremely large values of 2
Avatar
Tomáš Vondra:7.9.2016 20:39

Jop, ráno jsem to přesně takto vyřešil, s tím fflush máš pravdu, použiji u zkoušky při otázce, jak by šel program vylepšit. Děkuji !

 
Nahoru Odpovědět
7.9.2016 20:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.