Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- struct Table {
- FILE *f;
- struct Info{
- int n;
- } info;
- };
- void table_open(Table *t) {
- int n=0;
- t->f=fopen("Hero","r+b"); // открыть существующий файл как бинарный
- if(t->f==NULL) // нет файла
- {
- t->f=fopen("Hero","w+b"); // создать новый файл
- fwrite(&n,sizeof(n),1,t->f); // записать, что кол-во записей=0
- }
- }
- void table_close(Table *t)
- {
- fclose(t->f);
- }
- int table_size(Table *t)// количество записей
- {
- int n;
- fseek( t->f, 0, SEEK_SET);
- fread(&n, sizeof(int), 1, t->f);
- return n;
- }
- void table_read(Table *t, int n) // считать запись n (0..size-1)
- {
- fseek( t->f, n*sizeof(t->info)+4, SEEK_SET);
- fread(&n, sizeof(int), 1, t->f);
- }
- int main()
- {
- Table t;
- int cmd=1,n;
- table_open(&t);
- while(cmd!=0)
- {
- printf("Введите команду:"); scanf("%d",&cmd);
- switch(cmd)
- {
- case 1: printf("Количество записей %d\n",table_size(&t)); break;
- case 2: printf("Введите номер записи:"); scanf("%d",&n);
- table_read(&t,n);
- printf("Запись %d содержит: %s %d %c %.2f\n",t.info.n,t.info.n);
- break;
- }
- }
- table_close(&t);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement