Gymnázium prof. Jana Patočky Jindřišská Praha „Praha & EU: Investujeme do vaší budoucnosti“
Jazyk C Práce se soubory Vstup údajů ze souborů Výstup výsledků práce do souborů Vstupní/výstupní operace jsou vždy bufferované, tzn. -při čtení ze souboru se do paměti načte celý blok najednou a jednotlivé údaje se z něj při běhu programu postupně vybírají -při zápisu do souboru se zapisuje do bufferu (paměťového bloku) a teprve když je plný, zapíše se na médium (disk). V programu je nutno soubory pro vstup a výstup definovat: datový typ FILE * - pointer na objekt typu file FILE (píše se vždy velkými písmeny):
Jazyk C Práce se soubory Pro více proměnných: (definice souborové proměnné pro čtení a pro zápis): FILE *fr, *fw ; obvykle se používá *fr pro soubor, který je pro čtení a *fw pro soubor pro zápis Otevření souboru pro čtení: fr = fopen("ctimne.txt", "r") ; /* fr...pointer na soubor */ Pokud se neuvede celá cesta k souboru, předpokládá se umístění souboru ve složce, ve které je program. Otevření souboru pro zápis: fw = fopen("soubor.txt", "w") ; Toto je otevření v textovém režimu, pro binární by bylo "rb" resp. "wb".
Jazyk C Práce se soubory Základní operace s otevřeným textovým souborem: (předpokládáme proměnnou f typu FILE): c = getc(f) ; /* cteni jednoho znaku */ putc(c, f) ; /* zapis jednoho znaku */ formátovaný vstup a výstup: pocpol = fscanf(f, "format", argumenty) ; /*podobne jako scanf-pocpol je pocet prectenych polozek */ fprintf(f, "format", argumenty ) ; Uzavření otevřeného souboru: fclose(f) ; Uzavření souboru na konci práce s ním je nutné, zejména při zápisu - uložení obsahu bufferu na médium (disk).
Jazyk C Práce se soubory Další funkce pro čtení/zápis: fgets - řádkově orientovaný vstup definice: char *fgets(char *str, int max, FILE *fr) ; /* str - retezec, kam se uklada, max / max delka retezce, fr - soubor ; posledni znak v retezci je \0 */ fputs - řádkově orientovaný výstup definice: int fputs(char *s, FILE *fw) ; /* s - retezec, fw - soubor ; retezec neukoncuje ani nedava \n */