Практика программирования (Бейсик, Си, Паскаль)



         

Основные типы файлов в Си - часть 3


Программа 7_03.с

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <string.h>

main( ) {

FILE *fl; int j, k;

struct { char s [7]; int n; float r; } b;

clrscr();

strcpy(b.s,"Строка");

fl=fopen("c_rec","wb");

for(j=l;j<ll;j++)

{

b.n=j; b.r=sqrt(j);

fwrite(&b,sizeof(b),l,fl);

printf("\n%s %d %f",b.s,b.n,b.r);

}

fclose(fl); printf("\n");

fl=fopen("c_rec","rb");

for(j=10; j>0; j —) {

fseek(fl,(j-1)*sizeof(b),SEEK_SET);

fread(&b,sizeof(b),l,f1);

printf("\n%s %d %f",b.s,b.n,b.r);

}

getch();

}

Двоичные файлы в Си

Работа с настоящими двоичными файлами в Си отличается от приведенного выше примера только тем, что обмены с одним и тем же дисковым файлом могут производиться порциями любой длины, тогда как в записеориентиро-ванном файле предполагается, что размеры всех порций одинаковы.

Кроме набора функций {fopen/fciose, fread/fwrite}, для работы с двоичными файлами в библиотеке Borland С предусмотрены и другие средства -

{_dos_open/_dos_close, _dos_read/_dos_write}, (_creat/_close, _read/_write}.

Однако знакомство со всеми возможностями этой библиотеки в рамках настоящего пособия не предусмотрено.

Программа 7_04.с

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

main ( ) {

FILE *f1; int j, k;

char s[7]="Строка";

int n;

float r; clrscr. () ;

fl=fopen("c_bin","wb");

for(j=l;j<11;j++) {

r=sqrt(j);

fwrite(s,sizeof(s),1,f1);

fwrite(&j,sizeof(int),1,f1);

fwrite(&r,sizeof(float),1,f1);

printf("\n%s %d %f",s,j,r); }

fclose(f1l); printf("\n"); fl=fopen("c_rec","rb"); for(j=10; j>0; j--) {

fseekffl,(j-1)*(sizeof(s)+sizeof(int)+sizeof(float)),

SEEK_SET);

fread(&s,sizeof(s),1,fl);

fread(&n,sizeof(int),1,f1);

fread(&r,sizeof(float),1,f1);

printf("\n%s %d %f",s,n,r); }

getch(); }




Содержание  Назад  Вперед