Úvod do jazyka c

23
Úvod do jazyka C

Upload: lacy

Post on 18-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Ú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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Úvod do jazyka C

Úvod do jazyka C

Page 2: Úvod do jazyka 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.

Page 3: Úvod do jazyka 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í.

Page 4: Úvod do jazyka C

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.

Page 5: Úvod do jazyka C

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ámkaPoznámka: -identifikátor FILE musí byť veľkými písmenami !!!

- premenná f sa používa pre čítanie aj zápis do súboru.

Page 6: Úvod do jazyka C

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

Page 7: Úvod do jazyka C

7

Operácie so súbormi

Zápis adresárovej cesty

fp = fopen(“\\a.txt”, “w”);

fp = fopen(“d:\\student\\a.txt”, “w”);

Page 8: Úvod do jazyka C

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

Page 9: Úvod do jazyka C

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 prikazyfclose(fp);

}else{

printf("\n\r Subor sa nepodarilo otvorit");}

}

Page 10: Úvod do jazyka C

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úborufprintf(fp, “format”, argumenty);

čítanie znaku zo súboru c = getc(fp);zápis znaku do súboru putc(c,fp);

Page 11: Úvod do jazyka C

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.

Page 12: Úvod do jazyka C

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.

Page 13: Úvod do jazyka C

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

Page 14: Úvod do jazyka C

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

Page 15: Úvod do jazyka C

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.

Page 16: Úvod do jazyka C

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

}

Page 17: Úvod do jazyka C

17

Základné operácie so súbormiPotom 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);

}

Page 18: Úvod do jazyka C

18

Základné operácie so súbormiPotom 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);

}

Page 19: Úvod do jazyka C

20

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

Page 20: Úvod do jazyka C

22

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

}

Page 21: Úvod do jazyka C

24

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;

Page 22: Úvod do jazyka C

25

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

Page 23: Úvod do jazyka C

27

Záver

Pozrieť si funkcie:

fseek, fread, fwrite