Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Úvod do jazyka C Programovací jazyk C.

Podobné prezentace


Prezentace na téma: "Úvod do jazyka C Programovací jazyk C."— Transkript prezentace:

1 Úvod do jazyka C Programovací jazyk C

2 Práca so súbormi Vo väčšine programov sa pre vstup dát používajú súbory (z klávesnice sa zadávajú len základné údaje). Spracované údaje majú cenu len v prípade že budú výsledky uložené do súborov. Práca so súbormi je jednou zo základných znalostí programovania v jazyku C.

3 Základné pojmy Súbor je postupnosť bajtov uložených na médiu (najčastejšie disku) v niekoľkých blokoch. Bloky majú rovnakú veľkosť a nemusia ležať za sebou. Ako sa s nimi pracuje je záležitosťou operačného systému. Prístup k súboru je možný sekvenčne alebo náhodilo. Budeme sa zaoberať len sekvenčným prístupom k súboru. Z užívateľského hľadiska je súbor postupnosť po sebe idúcich bajtov od začiatku do konca súboru. Starosťou operačného systému je aby nám tieto bajty dodal v správnom poradí.

4 Základné pojmy Z dôvodu čo najväčšieho obmedzenia počtu periférnych operácií (zvýšenie rýchlosti) sú I/O operácie bufferované. Pre vstup to predstavuje: naraz sa číta celý blok dát z disku do pamäti (bufferu). Jednotlivé položky sa potom čítajú z pamäti a nie priamo z disku. Pre výstup: dáta sa zapisujú do bufferu (pamäti) a keď je plný, zapíše sa celý obsah bufferu na disk ako jeden blok. Keď potrebujeme 2 znaky zo súboru, načíta sa do pamäti celý úsek súboru napr. blok dát velkosti 512 bajtov, v ktorom sú naše požadované znaky obsiahnuté. Potom sa z pamäti znaky postupne čítajú. Dôvod – zrýchlenie práce.

5 Začiatok práce so súbormi
Nehľadajte v práci so súbormi žiadne zložitosti Základný dátový typ pre prácu so súbormi: FILE * Definícia premennej f pre prácu so súborom: FILE *fp; Poznámka: -identifikátor FILE musí byť veľkými písmenami !!! - premenná f sa používa pre čítanie aj zápis do súboru.

6 Operácie so súbormi Pred začiatkom práce so súborom je potrebné súbor otvoriť. Spôsob otvorenia súboru určuje, aké činnosti bude možné so súborom vykonávať. Otvorenie súboru pre čítanie: fp = fopen(“a.txt”, “r”); Otvorenie súboru pre zápis: fp = fopen(“a.txt”, “w”); Musí byť dve \\

7 Operácie so súbormi Zápis adresárovej cesty
fp = fopen(“\\a.txt”, “w”); fp = fopen(“d:\\student\\a.txt”, “w”); Musí byť dve \\

8 Testovanie na existenciu súbora, resp. jeho otvorenia
Používa sa porovnanie identifikátora súboru na hodnotu NULL. if (fp==NULL) { printf(“\n\r Subor sa nepodarilo otvorit”); }

9 Testovanie na existenciu súbora, resp. jeho otvorenia
#include <stdio.h> #include <stdlib.h> #include <time.h> main() { FILE *fp; fp=fopen("mena.txt","r"); if(fp!=NULL) …. vykoname nejake prikazy fclose(fp); } else printf("\n\r Subor sa nepodarilo otvorit");

10 Základné operácie so súbormi
Funkcie štandartnej knižnice stdio.h pre prácu so súborom. Súbor musí byť vopred otvorený. Premenná f je typu FILE *: formátované čítanie zo súboru fscanf(fp, “format”, argumenty); formátovaný zápis do súboru fprintf(fp, “format”, argumenty); čítanie znaku zo súboru c = getc(fp); zápis znaku do súboru putc(c,fp); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

11 Testovanie konca súboru
Na konci súboru je uložený znak EOF. Na testovanie konca súboru sa používa funkcia feof(<identifikator_suboru>) Tento spôsob používame vtedy, ak nevieme, aký veľký súbor je alebo koľko údajov sa v ňom nachádza.

12 Ukončenie práce so súborom
Po ukončení práce so súborom je nutné to operačnému systému oznámiť – uzatvoriť súbor Funkcia pre uzatvorenie súboru fclose(fp); Operačný systém súbory uzatvára po ukončení programu, ale môže dojsť pri zápise k situácii, že program bude ukončený a dáta z bufferu nebudú zapísané na disk.

13 Základné operácie so súbormi
fscanf(fp, “%c”, znak); // nacitanie a zapis znaku fprintf(fp, “%c”, znak); fscanf(fp, “%d”, cislo); // nacitanie a zapis cisla fprintf(fp, “%d”, cislo); fscanf(fp, “%f”, zlomok); // nacitanie a zapis des. cisla fprintf(fp, “%f”, zlomok); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

14 Základné operácie so súbormi
Zapísanie textu s číslom fprintf(fp, “Vysledok prikladu: %d”, cislo); Zapísanie dvoch čísel fprintf(fp, “Cislo %d na druhu je %d ”, cislo , cislo*cislo); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

15 Základné operácie so súbormi
Zadanie: a) zapísať druhú a tretiu mocninu čísla do súbora. b) načítať druhú a tretiu mocninu čísla do súbora. Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

16 Základné operácie so súbormi
Najskôr je potrebné zapísať údaje: #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; int i; fp=fopen("mocniny.txt","w"); for(i=0; i<10; i++) fprintf(fp,"%d %d %d \n", i, i*i, i*i*i); } fclose(fp); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

17 Základné operácie so súbormi
Potom tieto údaje načítame: #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; int i, cislo1, cislo2, cislo3; fp=fopen("mocniny.txt","r"); for(i=0; i<10; i++) fscanf(fp,"%d %d %d \n", &cislo1, &cislo2, &cislo3); printf("\n\r Cislo: %d x^2=%d x^3=%d", cislo1, cislo2, cislo3); } fclose(fp); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

18 Základné operácie so súbormi
Potom tieto údaje načítame: #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; int i, cislo1, cislo2, cislo3; fp=fopen("mocniny.txt","r"); while(!feof(fp)) fscanf(fp,"%d %d %d \n", &cislo1, &cislo2, &cislo3); printf("\n\r Cislo: %d x^2=%d x^3=%d",cislo1,cislo2,cislo3); } fclose(fp); Porovnať s použitím zápisu na obrazovku a čítaním z klávesnice.

19 Zápis do súboru #include <stdio.h> #include <stdlib.h>
#include <time.h> main() { FILE *fp; char meno[256]; int i,vek; fp=fopen("mena.txt","w"); for(i=0; i<5; i++) printf("\n\r Zadaj meno: "); scanf("%s",&meno); printf("\n\r Zadaj vek: "); scanf("%d",&vek); fprintf(fp, "%s %d\n",meno,vek); } fclose(fp);

20 Čítanie zo súboru #include <stdio.h> #include <stdlib.h>
#include <time.h> main() { FILE *fp; char meno[256]; int vek; fp=fopen("mena.txt","r"); while(!feof(fp)) fscanf(fp,"%s %d",&meno,&vek); printf("\n\r %s %d",meno,vek); } fclose(fp);

21 FILE *fr; int c; long int pocet = 0; if ((fr = fopen("PISMENA.TXT", "r")) == NULL) { printf("Subor PISMENA.TXT sa nepodarilo otvorit\n"); return 1; } while ((c = getc(fr)) != EOF) pocet++; printf("V subore PISMENA.TXT je %d znakov\n", pocet); return 0;

22 #include <stdio.h> int main(void) { FILE *fr; int i;
if ((fr = fopen("CISLA.TXT", "w")) == NULL) { printf("Soubor CISLA.TXT sa nepodarilo otvorit\n"); return 1; } for (i = 0; i < 20; i++) fprintf(fr, " %.2f\n", i * 3.14); fclose(fr); return 0; Formatovaný zápis čísel do súboru

23 Záver Pozrieť si funkcie: fseek, fread, fwrite


Stáhnout ppt "Úvod do jazyka C Programovací jazyk C."

Podobné prezentace


Reklamy Google