Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <stdio.h>
  2. struct Table {
  3. FILE *f;
  4. struct Info{
  5. int n;
  6. } info;
  7. };
  8.  
  9. void table_open(Table *t) {
  10. int n=0;
  11. t->f=fopen("Hero","r+b"); // открыть существующий файл как бинарный
  12. if(t->f==NULL) // нет файла
  13. {
  14. t->f=fopen("Hero","w+b"); // создать новый файл
  15. fwrite(&n,sizeof(n),1,t->f); // записать, что кол-во записей=0
  16. }
  17. }
  18. void table_close(Table *t)
  19. {
  20. fclose(t->f);
  21. }
  22. int table_size(Table *t)// количество записей
  23. {
  24. int n;
  25. fseek( t->f, 0, SEEK_SET);
  26. fread(&n, sizeof(int), 1, t->f);
  27. return n;
  28. }
  29. void table_read(Table *t, int n) // считать запись n (0..size-1)
  30. {
  31. fseek( t->f, n*sizeof(t->info)+4, SEEK_SET);
  32. fread(&n, sizeof(int), 1, t->f);
  33. }
  34.  
  35. int main()
  36. {
  37. Table t;
  38. int cmd=1,n;
  39. table_open(&t);
  40. while(cmd!=0)
  41. {
  42. printf("Введите команду:"); scanf("%d",&cmd);
  43. switch(cmd)
  44. {
  45. case 1: printf("Количество записей %d\n",table_size(&t)); break;
  46. case 2: printf("Введите номер записи:"); scanf("%d",&n);
  47. table_read(&t,n);
  48. printf("Запись %d содержит: %s %d %c %.2f\n",t.info.n,t.info.n);
  49. break;
  50. }
  51. }
  52. table_close(&t);
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement