Diskuze: Soubory
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Program nemůže fungovat, neboť se v něm vyskytují logické a syntaktické chyby. Už způsob, jakým zadáváš názvy týmů, je chybný. Nelze použít funkci scanf_s v tomto tvaru. Funkce scanf_s nefunguje, pokud načítaný řetězec obsahuje bílé znaky, jako třeba mezery, které v názvech týmů jsou. Způsobem, jakým scanf_s používáš, nedokážeš do proměnné načíst např. tým: FC NEKOPOVE, ale pouze první slovo názvu týmu. Pokud to chceš řešit pomocí funkce scanf_s, pak u jejího volání musíš stanovit inverzní znakovou sadu obsahující znak nového řádku, čímž ji umožníš podporu mezery, tak jak to máš v komentáři u druhého obrázku. Avšak mnohem elegantnější řešení je pomoci funkce fgets, kterou voláš s ukazatelem na standartní vstup, kde pak následně přepisuješ funkcí fgets automaticky vkládaný poslední znak LF (ASCII 10) proměnné, do které vstup načítáš na nulový znak, abys dostal čistý řetězec obsahující název týmu. Pro formátovaný výstup do souboru se správně snažíš použít funkci fprintf, avšak komentář, že zde mezery nebere, jsi věštil, neboť program si nemohl ani spustit, jelikož voláš funkci fprintf s nesprávným počtem argumentů a kompiler Ti musel hlásit chybu při překladu. Výpis souboru na obrazovku, to je pořádná divočina. Jednoduše načítej postupně znak po znaku a testuj jeho hodnotu na EOF, následně vypisuj tento znak na obrazovku. Co se mi ale líbí je to, že se snažíš odchytávat chyby které mohou nastat. Když pak k tomu ještě ve svých programech začneš využívat direktivy preprocesoru spolu s kontrolním výpisem proměnných na obrazovku či do souboru, dosti Ti to usnadní práci.
Zobrazeno 4 zpráv z 4.