Áëîêîâûé ââîä-âûâîä

Äëÿ áëîêîâîãî ââîäà-âûâîäà èñïîëüçóþòñÿ ôóíêöèè:

1) int fread(void*ptr,int size, int n, FILE*f), ãäå

void*ptr – óêàçàòåëü íà îáëàñòü ïàìÿòè, â êîòîðîé ðàçìåùàþòñÿ ñ÷èòàííûå èç ôàéëà äàííûå,

int size – ðàçìåð îäíîãî ñ÷èòûâàåìîãî ýëåìåíòà,

int n – êîëè÷åñòâî ñ÷èòûâàåìûõ ýëåìåíòîâ,

FILE*f – óêàçàòåëü íà ôàéë, èç êîòîðîãî ïðîèçâîäèòñÿ ñ÷èòûâàíèå.

 ñëó÷àå óñïåøíîãî ñ÷èòûâàíèÿ ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ñ÷èòàííûõ ýëåìåíòîâ, èíà÷å – EOF.

2) int fwrite(void*ptr,int size, int n, FILE*f), ãäå

void*ptr – óêàçàòåëü íà îáëàñòü ïàìÿòè, â êîòîðîé ðàçìåùàþòñÿ ñ÷èòàííûå èç ôàéëà äàííûå,

int size – ðàçìåð îäíîãî çàïèñûâàåìîãî ýëåìåíòà,

int n – êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ,

FILE*f – óêàçàòåëü íà ôàéë, â êîòîðûé ïðîèçâîäèòñÿ çàïèñü.

 ñëó÷àå óñïåøíîé çàïèñè ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî çàïèñàííûõ ýëåìåíòîâ, èíà÷å – EOF.

Ïðèìåð:

struct Employee

{

char name[30];

char title[30];

float rate;

};

void main()

{

Employee e;

FILE *f;

if((f=fopen(“f.dat”,”wb”))==NULL)

{

cout<<” Cannot open file for writing”;

exit(1);

}

int n;

//çàïèñü â ôàéë

printf(“ N-?”);

scanf(“%d”,&n);

for(int i=0;i<n;i++)

{

//ôîðìèðóåì ñòðóêòóðó å

printf(“ name:”);scanf(“%s”,&e.name);

printf(“ title:”);scanf(“%s”,&e.title);

printf(“ rate:”);scanf(“%s”,&e.rate);

//çàïèñûâàåì å â ôàéë

fwrite(&e,sizeof(Employee),1,f);

}

fclose(f);

//÷òåíèå èç ôàéëà

if((f=fopen(“f.dat”,”rb”))==NULL)

{

cout<<” Cannot open file for reading”;

exit(2);

}

while(fread(&e,sizeof(Employee)1,f)

{

printf(“%s % s%f”, e.name, e.title, e.rate)

}

fclose(f);

}