Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define INITIAL_SIZE 3
  5.  
  6. int main()
  7. {
  8.     FILE *fp;
  9.     int size = INITIAL_SIZE;
  10.     int length,i, count =0;
  11.     char **brand=NULL;
  12.     char **model=NULL;
  13.     int *year=NULL;
  14.  
  15.     brand = (char**)malloc(size*sizeof(char*));
  16.     model = (char**) malloc(size*sizeof(char*));
  17.     year = (int*) malloc(size*sizeof(int));
  18.  
  19.     for(i=0;i<size;i++)
  20.     {
  21.         brand[i] = (char*) malloc(40);
  22.         model[i] = (char*) malloc(40);
  23.     }
  24.  
  25.     if((fp=fopen("cars.bin", "rb")) == NULL)
  26.     {
  27.         printf("couldnt open file");
  28.         exit(1);
  29.     }
  30.  
  31.     while(1)
  32.     {
  33.         if(fread(&length, sizeof(int), 1, fp) != 1)
  34.         {
  35.             printf("1st length read end\n");
  36.             break;
  37.         }
  38.  
  39.         if(fread(brand[count], 1, length, fp) != length)
  40.         {
  41.             printf("brand read end\n");
  42.             break;
  43.         }
  44.         if(fread(&length, sizeof(int), 1, fp) != 1)
  45.         {
  46.             printf("2nd length read end\n");
  47.             break;
  48.         }
  49.         if(fread(model[count], 1, length, fp) != length)
  50.         {
  51.             printf("model read end\n");
  52.             break;
  53.         }
  54.         if(fread(&year[count], sizeof(int),1, fp) != 1)
  55.         {
  56.             printf("year read end\n");
  57.             break;
  58.         }
  59.         count++;
  60.  
  61.         if(count==size)
  62.         {
  63.             brand = realloc(brand, size*2*sizeof(char*));
  64.             model = realloc(model, size*2*sizeof(char*));
  65.             year = realloc(year, size*2*sizeof(int));
  66.             if(model == NULL)
  67.             {
  68.                 printf("model reallocate error\n");
  69.                 break;
  70.             }
  71.             if(brand == NULL)
  72.             {
  73.                 printf("brand reallocate error\n");
  74.                 break;
  75.             }
  76.             if(year == NULL)
  77.             {
  78.                 printf("year reallocate error\n");
  79.                 break;
  80.             }
  81.  
  82.             for(i=size;i<2*size;i++)
  83.             {
  84.                 brand[i] = (char*) malloc(40);
  85.                  model[i] = (char*) malloc(40);
  86.             }
  87.              size*=2;
  88.  
  89.         }
  90.  
  91.     }
  92.  
  93.     fclose(fp);
  94.  
  95.  
  96.     for(i=0;i<count;i++)
  97.     {
  98.         printf("%s\n", brand[i]);
  99.         printf("%s\n", model[i]);
  100.         printf("%d\n", year[i]);
  101.     }
  102.  
  103.  
  104.     for(i=0;i<size;i++)
  105.     {
  106.        free(brand[i])   ;
  107.        free(model[i]);
  108.     }
  109.  
  110.     free(brand);
  111.     free(model);
  112.     free(year);
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement