Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Pomoc s Warningem

C a C++ C a C++ Pomoc s Warningem

Aktivity (1)
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
Redaktor
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í
+1 bodů
Ř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.