Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.     char name[50];
  7.     char singer[50];
  8.     int min;
  9.     int sec;
  10.     char genre[20];
  11. } Music;
  12.  
  13. void view(char* file)
  14. {
  15.     int i;
  16.     FILE *fp=fopen(file,"rb");
  17.     fseek(fp,0,SEEK_END); // курсор в конец
  18.     int lenght=sizeof(Music); // сохраняем размер одной записи (необязательно)
  19.     int size = ftell(fp) / lenght; // узнаем количество записей
  20.     Music *Album = (Music*)malloc(size * lenght); // выделяем память
  21.     rewind(fp); // перематываем файл
  22.     for (i = 0; i < size; ++i)
  23.     {
  24.         fread(&Album[i],sizeof(Music),1,fp);
  25.     }
  26.     for (i = 0; i < size; ++i)
  27.     {
  28.         printf("Song #%d <%s>, Singer <%s>, time %d:%d, genre <%s>\n",\
  29.         i+1,Album[i].name,Album[i].singer,Album[i].min,Album[i].sec,Album[i].genre);
  30.     }
  31. }
  32.  
  33. void view_4(char* file)
  34. {
  35.     int i;
  36.     FILE *fp=fopen(file,"rb");
  37.     fseek(fp,0,SEEK_END); // курсор в конец
  38.     int lenght=sizeof(Music); // сохраняем размер одной записи (необязательно)
  39.     int size = ftell(fp) / lenght; // узнаем количество записей
  40.     Music *Album = (Music*)malloc(size * lenght); // выделяем память
  41.     rewind(fp); // перематываем файл
  42.     for (i = 0; i < size; ++i)
  43.     {
  44.         fread(&Album[i],sizeof(Music),1,fp);
  45.     }
  46.     for (i = 0; i < size; ++i)
  47.     {
  48.         if (Album[i].min<4)
  49.         printf("Song #%d <%s>, Singer <%s>, time %d:%d, genre <%s>\n",\
  50.         i+1,Album[i].name,Album[i].singer,Album[i].min,Album[i].sec,Album[i].genre);
  51.     }
  52. }
  53.  
  54. int main()
  55. { char file[50]; puts ("Name of file:"); gets (file);  //ввод имени файла
  56.     char menu; // переменная для работы меню
  57. do
  58. {
  59.     puts ("1. View"); puts ("2. View <4 min"); puts ("3. Exit");
  60.     menu = getchar(); // запись нажатой клавиши в переменную меню
  61.     switch (menu)  // в зависимости от меню выбираем действие
  62.     {
  63.         case '1': view(file); break;
  64.         case '2': view_4(file);
  65.     }
  66. }
  67. while (menu!='3'); // пока не введем 3 – как введем 3 – выход.
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement