lab 02

background image

1

mgr in

mgr in

ż

ż

. Pawe

. Pawe

ł

ł

Myszkowski

Myszkowski

Metodyki i Techniki

Metodyki i Techniki

Programowania 2

Programowania 2

zaj

zaj

ę

ę

cia nr 2

cia nr 2

Elektronika i Telekomunikacja, semestr III

Elektronika i Telekomunikacja, semestr III

rok akademicki 2009/2010

rok akademicki 2009/2010

Plan dzisiejszych zaj

Plan dzisiejszych zaj

ęć

ęć

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

2.

2.

Zapis i odczyt dla plik

Zapis i odczyt dla plik

ó

ó

w tekstowych

w tekstowych

3.

3.

Przyk

Przyk

ł

ł

ady odwo

ady odwo

ł

ł

a

a

ń

ń

do plik

do plik

ó

ó

w tekstowych

w tekstowych

4.

4.

Zadania do zrobienia

Zadania do zrobienia

background image

2

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Plik:

Plik:

-

-

z punktu widzenia u

z punktu widzenia u

ż

ż

ytkownika jest to zbi

ytkownika jest to zbi

ó

ó

r

r

danych na dysku,

danych na dysku,

-

-

z punktu widzenia kompilatora jest to logiczna

z punktu widzenia kompilatora jest to logiczna

interpretacja zbioru danych,

interpretacja zbioru danych,

-

-

w j

w j

ę

ę

zyku C plik niekoniecznie musi oznacza

zyku C plik niekoniecznie musi oznacza

ć

ć

zbi

zbi

ó

ó

r

r

na dysku (mo

na dysku (mo

ż

ż

e by

e by

ć

ć

skojarzony z klawiatur

skojarzony z klawiatur

ą

ą

).

).

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Krok 1

Krok 1

skojarzenie pliku ze zbiorem

skojarzenie pliku ze zbiorem

danych, czyli otwarcie pliku.

danych, czyli otwarcie pliku.

FILE *zmienna;

FILE *zmienna;

//wska

//wska

ź

ź

nik pliku

nik pliku

Wska

Wska

ź

ź

nik wskazuje na pewn

nik wskazuje na pewn

ą

ą

struktur

struktur

ę

ę

zadeklarowan

zadeklarowan

ą

ą

w pliku <

w pliku <

stdio.h

stdio.h

>. Zawiera ona informacje o pliku,

>. Zawiera ona informacje o pliku,

m.in. po

m.in. po

ł

ł

o

o

ż

ż

enie bufora, rodzaj dost

enie bufora, rodzaj dost

ę

ę

pu do pliku,

pu do pliku,

sygna

sygna

ł

ł

y o wyst

y o wyst

ą

ą

pieniu b

pieniu b

łę

łę

d

d

ó

ó

w.

w.

background image

3

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Do otwarcia pliku s

Do otwarcia pliku s

ł

ł

u

u

ż

ż

y funkcja

y funkcja

fopen

fopen

().

().

FILE *zmienna =

FILE *zmienna =

fopen("

fopen("

nazwa_pliku

nazwa_pliku

","

","

tryb

tryb

");

");

nazwa_pliku

nazwa_pliku

nazwa zbioru na dysku, mo

nazwa zbioru na dysku, mo

ż

ż

e by

e by

ć

ć

razem ze

razem ze

ś

ś

cie

cie

ż

ż

k

k

ą

ą

dost

dost

ę

ę

pu

pu

tryb

tryb

okre

okre

ś

ś

la spos

la spos

ó

ó

b dost

b dost

ę

ę

pu do pliku

pu do pliku

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Tryby dost

Tryby dost

ę

ę

pu do pliku:

pu do pliku:

"r"

"r"

czytanie

czytanie

"w"

"w"

zapisywanie

zapisywanie

je

je

ś

ś

li plik nie istnieje

li plik nie istnieje

-

-

zostanie utworzony

zostanie utworzony

je

je

ś

ś

li plik istnieje

li plik istnieje

zostanie nadpisany

zostanie nadpisany

"a"

"a"

dopisywanie

dopisywanie

na ko

na ko

ń

ń

cu istniej

cu istniej

ą

ą

cego lub na pocz

cego lub na pocz

ą

ą

tku nowego

tku nowego

"r+"

"r+"

czytanie z mo

czytanie z mo

ż

ż

liwo

liwo

ś

ś

ci

ci

ą

ą

zapisywania

zapisywania

"w+"

"w+"

zapisywanie z mo

zapisywanie z mo

ż

ż

liwo

liwo

ś

ś

ci

ci

ą

ą

czytania

czytania

"a+"

"a+"

dopisywanie z mo

dopisywanie z mo

ż

ż

liwo

liwo

ś

ś

ci

ci

ą

ą

czytania

czytania

background image

4

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Rodzaje plik

Rodzaje plik

ó

ó

w:

w:

Pliki tekstowe

Pliki tekstowe

podzielone na wiersze (linie), z

podzielone na wiersze (linie), z

kt

kt

ó

ó

rych ka

rych ka

ż

ż

dy ko

dy ko

ń

ń

czy si

czy si

ę

ę

znakiem ko

znakiem ko

ń

ń

ca wiersza.

ca wiersza.

Ca

Ca

ł

ł

y plik ko

y plik ko

ń

ń

czy si

czy si

ę

ę

znakiem ko

znakiem ko

ń

ń

ca pliku (EOF).

ca pliku (EOF).

Pliki binarne

Pliki binarne

nie maj

nie maj

ą

ą

okre

okre

ś

ś

lonej struktury

lonej struktury

Aby otworzy

Aby otworzy

ć

ć

plik jako binarny, w

plik jako binarny, w

ł

ł

a

a

ń

ń

cuchu znak

cuchu znak

ó

ó

w

w

okre

okre

ś

ś

laj

laj

ą

ą

cym tryb dost

cym tryb dost

ę

ę

pu na ko

pu na ko

ń

ń

cu dodajemy

cu dodajemy

literk

literk

ę

ę

"b",

"b",

np

np

. "

. "

rb

rb

", "

", "

w+b

w+b

". Bez tego plik jest

". Bez tego plik jest

traktowany jako tekstowy.

traktowany jako tekstowy.

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

Zamykanie pliku

Zamykanie pliku

Po zako

Po zako

ń

ń

czeniu pracy z plikiem nale

czeniu pracy z plikiem nale

ż

ż

y go

y go

zamkn

zamkn

ąć

ąć

. S

. S

ł

ł

u

u

ż

ż

y do tego funkcja

y do tego funkcja

fclose

fclose

.

.

int

int

fclose(FILE

fclose(FILE

*zmienna);

*zmienna);

background image

5

Schemat przetwarzania pliku

Schemat przetwarzania pliku

FILE *

FILE *

plik=fopen("D:

plik=fopen("D:

\

\

\

\

student

student

\

\

\

\

plik.txt","r

plik.txt","r

");

");

//otwarcie

//otwarcie

if

if

(

(

plik==NULL

plik==NULL

)

)

//kontrola b

//kontrola b

łę

łę

d

d

ó

ó

w

w

{

{

printf("Blad

printf("Blad

otwarcia

otwarcia

pliku

pliku

\

\

n

n

");

");

getch

getch

(); exit(

(); exit(

-

-

1);

1);

}

}

/* przetwarzanie pliku

/* przetwarzanie pliku

zapis lub odczyt */

zapis lub odczyt */

fclose(plik

fclose(plik

)

)

//zamkni

//zamkni

ę

ę

cie

cie

1.

1.

Operacje na plikach

Operacje na plikach

-

-

wprowadzenie

wprowadzenie

2. Zapis i odczyt dla plik

2. Zapis i odczyt dla plik

ó

ó

w tekstowych

w tekstowych

Czytanie i zapisywanie pojedynczych znak

Czytanie i zapisywanie pojedynczych znak

ó

ó

w:

w:





fgetc

fgetc

odczytuje z pliku jeden znak

odczytuje z pliku jeden znak

nag

nag

ł

ł

ó

ó

wek:

wek:

int

int

fgetc(FILE

fgetc(FILE

*plik);

*plik);





fputc

fputc

zapisuje do pliku jeden znak

zapisuje do pliku jeden znak

nag

nag

ł

ł

ó

ó

wek:

wek:

int

int

fputc(char

fputc(char

znak, FILE *plik);

znak, FILE *plik);

Przyk

Przyk

ł

ł

ad:

ad:

FILE *plik;

FILE *plik;

plik

plik

=

=

fopen("jakis_plik.txt","r+t

fopen("jakis_plik.txt","r+t

");

");

char znak =

char znak =

fgetc(plik

fgetc(plik

);

);

fputc(znak,plik

fputc(znak,plik

);

);

background image

6

2. Zapis i odczyt dla plik

2. Zapis i odczyt dla plik

ó

ó

w tekstowych

w tekstowych

Czytanie i zapisywanie

Czytanie i zapisywanie

ł

ł

a

a

ń

ń

cuch

cuch

ó

ó

w znak

w znak

ó

ó

w:

w:





fgets

fgets

czyta z pliku

czyta z pliku

ł

ł

a

a

ń

ń

cuch znak

cuch znak

ó

ó

w o podanej d

w o podanej d

ł

ł

ugo

ugo

ś

ś

ci lub do

ci lub do

ko

ko

ń

ń

ca wiersza,

ca wiersza,

nag

nag

ł

ł

ó

ó

wek:

wek:

char*

char*

fgets(char

fgets(char

* linia,

* linia,

int

int

dl, FILE* plik);

dl, FILE* plik);





fputs

fputs

zapisuje

zapisuje

ł

ł

a

a

ń

ń

cuch znak

cuch znak

ó

ó

w do pliku,

w do pliku,

nag

nag

ł

ł

ó

ó

wek:

wek:

int

int

fputs(char

fputs(char

* linia, FILE *plik);

* linia, FILE *plik);

Przyk

Przyk

ł

ł

ad:

ad:

FILE *plik;

FILE *plik;

char *linia;

char *linia;

plik =

plik =

fopen("jakis_plik.txt","rt

fopen("jakis_plik.txt","rt

");

");

fgets

fgets

(linia,255,plik);

(linia,255,plik);

printf("Linia

printf("Linia

z pliku: %

z pliku: %

s",linia

s",linia

);

);

2. Zapis i odczyt dla plik

2. Zapis i odczyt dla plik

ó

ó

w tekstowych

w tekstowych

Odczyt i zapis sformatowany:

Odczyt i zapis sformatowany:





fscanf

fscanf

dzia

dzia

ł

ł

a tak jak

a tak jak

scanf

scanf

, ale ma dodatkowy parametr,

, ale ma dodatkowy parametr,

nag

nag

ł

ł

ó

ó

wek:

wek:

int

int

fscanf(FILE

fscanf(FILE

* plik,

* plik,

const

const

char* format,

char* format,

);

);





fprintf

fprintf

dzia

dzia

ł

ł

a tak jak

a tak jak

printf

printf

, ale ma dodatkowy parametr,

, ale ma dodatkowy parametr,

nag

nag

ł

ł

ó

ó

wek:

wek:

int

int

fprintf(FILE

fprintf(FILE

* plik,

* plik,

const

const

char* format,

char* format,

);

);

Przyk

Przyk

ł

ł

ad:

ad:

FILE *plik;

FILE *plik;

int

int

liczba=21;

liczba=21;

plik =

plik =

fopen("jakis_plik.txt","wt

fopen("jakis_plik.txt","wt

");

");

fprintf(plik,"Liczba

fprintf(plik,"Liczba

zapisana do pliku to %

zapisana do pliku to %

d

d

\

\

n",liczba

n",liczba

);

);

fclose(plik

fclose(plik

);

);

background image

7

3. Przyk

3. Przyk

ł

ł

ady odwo

ady odwo

ł

ł

a

a

ń

ń

do plik

do plik

ó

ó

w tekst.

w tekst.

Czytanie z pliku znak po znaku:

Czytanie z pliku znak po znaku:

#

#

include

include

<

<

stdio.h

stdio.h

>

>

#

#

include

include

<

<

conio.h

conio.h

>

>

int

int

main

main

()

()

{

{

char znak;

char znak;

FILE* plik =

FILE* plik =

fopen("main.c","rt

fopen("main.c","rt

");

");

while((znak=fgetc(plik))!=EOF

while((znak=fgetc(plik))!=EOF

)

)

printf("%c",znak

printf("%c",znak

);

);

fclose(plik

fclose(plik

);

);

getch

getch

();

();

}

}

3. Przyk

3. Przyk

ł

ł

ady odwo

ady odwo

ł

ł

a

a

ń

ń

do plik

do plik

ó

ó

w tekst.

w tekst.

Czytanie z pliku linia po linii:

Czytanie z pliku linia po linii:

#

#

include

include

<

<

stdio.h

stdio.h

>

>

#

#

include

include

<

<

conio.h

conio.h

>

>

int

int

main

main

()

()

{

{

char linia[255];

char linia[255];

FILE* plik =

FILE* plik =

fopen("main.c","rt

fopen("main.c","rt

");

");

while((fgets(linia,255,plik)!=NULL)

while((fgets(linia,255,plik)!=NULL)

printf("%s",linia

printf("%s",linia

);

);

fclose(plik

fclose(plik

);

);

getch

getch

();

();

}

}


Wyszukiwarka

Podobne podstrony:
Lab 02 2011 2012
Lab 02 R
fiz lab 02
pa lab [02] rozdział 2 UATQAIA4NCICPJGTM2Z7WZ67ZMYLLAS5WS6ALYA
02 - pom rezystancji, Lab 02 c, Laboratorium
02 - pom rezystancji, Lab 02 c, Laboratorium
lab 02 php id 258739 Nieznany
2011 lab 02, Uklady rownan liniowych
MP Lab 02 Otwory, 2
02 - pom rezystancji, Lab 02 e
2011 lab 02 Uklady rownan liniowychid 27450
02 - pom rezystancji, Lab 02 b, Laboratorium
Lab 02 Operacje na plikach
in lab 02
Lab 02
468 SCR Lab 02
Systemy Lab 02
lab 02 id 257506 Nieznany

więcej podobnych podstron