1 / 23

Úvod do jazyka C

Úvod do jazyka C. Programovací jazyk C. 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.

lacy
Download Presentation

Úvod do jazyka C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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.

  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”);

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

  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);

  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);

  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);

  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.

  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); }

  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); }

  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); }

  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; }

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

More Related