IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: Soubory

Aktivity
Avatar
pavel
Člen
Avatar
pavel:20.1.2017 15:19

Potřeboval bych pomoc ohledně zápisu do souboru a následného výpisu, tak abych tam mohl zapsat dvě slova, která jsou oddělena mezerou.

 
Odpovědět
20.1.2017 15:19
Avatar
pavel
Člen
Avatar
pavel:20.1.2017 15:20
  1. obrázek - uživatel zadává nějaký tým
  2. obrázek - zápis do souboru
  3. obrázek - výpis souboru
 
Nahoru Odpovědět
20.1.2017 15:20
Avatar
DarkCoder
Člen
Avatar
Odpovídá na pavel
DarkCoder:21.1.2017 4:21

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.

Nahoru Odpovědět
21.1.2017 4:21
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Nahoru Odpovědět
21.1.2017 21:44
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 4 zpráv z 4.