Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define BUFMAX 1005
  6.  
  7. typedef struct elev {
  8.     char nume[80];
  9.     float media;
  10. } Elev;
  11.  
  12. void create_binary_file(char file_name[])
  13. {
  14.     FILE* binary_file_stream = fopen(file_name, "wb");
  15.     if(binary_file_stream == NULL) {
  16.         fprintf(stderr, "%s", "failed\n");
  17.     }
  18.  
  19.     Elev elevi[20];
  20.     int n;
  21.     scanf("%d", &n);
  22.     for(int i = 0; i < n; i++) {
  23.         scanf("%s %f", elevi[i].nume, &elevi[i].media);
  24.     }
  25.     //size_t fwrite ( void * ptr, size_t size, size_t count, FILE * stream );
  26.     fwrite(&n, sizeof(int), 1, binary_file_stream);
  27.     fwrite(elevi, sizeof(Elev), n, binary_file_stream);
  28.  
  29.     fclose(binary_file_stream);
  30. }
  31.  
  32. void read_binary_file(char file_name[]) {
  33.     FILE* binary_file_stream = fopen(file_name, "rb");
  34.     if(binary_file_stream == NULL) {
  35.         fprintf(stderr, "%s", "failed\n");
  36.     }
  37.     int n;
  38.     Elev elevi[20];
  39.     fread(&n, sizeof(int), 1, binary_file_stream);
  40.     fread(elevi, sizeof(Elev), n, binary_file_stream);
  41.  
  42.     for(int i = 0; i < n; i++) {
  43.         printf("%s %f\n", elevi[i].nume, elevi[i].media);
  44.     }
  45.     fclose(binary_file_stream);
  46. }
  47.  
  48. void positions(char file_name[], int pos[], int* dim)
  49. {
  50.     FILE* binary_file_stream = fopen(file_name, "rb");
  51.     if(binary_file_stream == NULL) {
  52.         fprintf(stderr, "%s", "failed\n");
  53.     }
  54.  
  55.     int n;
  56.     Elev elevi[20];
  57.     fread(&n, sizeof(int), 1, binary_file_stream);
  58.     fread(elevi, sizeof(Elev), n, binary_file_stream);
  59.  
  60.     for(int i = 0; i < n; i++) {
  61.         if(elevi[i].media >= 7.50) {
  62.             pos[(*dim)++] = i;
  63.         }
  64.     }
  65.     fclose(binary_file_stream);
  66. }
  67.  
  68. int main(int argc, char **argv)
  69. {
  70.     create_binary_file("fisier_binar.bin");
  71.     read_binary_file("fisier_binar.bin");
  72.  
  73.     int vec[20];
  74.     int dim = 0;
  75.     positions((char*)"fisier_binar.bin", vec, &dim);
  76.  
  77.     FILE* binary_file_stream = fopen("fisier_binar.bin", "rb");
  78.     if(binary_file_stream == NULL) {
  79.         fprintf(stderr, "%s", "failed\n");
  80.     }
  81.  
  82.     int n;
  83.     char nume[80];
  84.     fread(&n, sizeof(int), 1, binary_file_stream);
  85.     for(int i = 0; i < dim; i++) {
  86.         int pos = vec[i];
  87.         fseek(binary_file_stream, pos * sizeof(Elev) + sizeof(n), SEEK_SET);
  88.         fread(nume, sizeof(char), 20, binary_file_stream);
  89.     }
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement