Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. //  size_of_name(int)|name(str)|group(int)|size_of_faknum|fak_num(str)
  5.  
  6. void readFile(int *num_of_records, char ***name, int **group, char ***fak_num, FILE *fp){
  7.     int size;
  8.     int allocated_elements = 5;
  9.     int counter=0;
  10.    
  11.     *name = (char**)malloc(sizeof(int)*allocated_elements);
  12.     *group = (int*)malloc(sizeof(int)*allocated_elements);
  13.     *fak_num = (char**)malloc(sizeof(int)*allocated_elements);
  14.    
  15.     while(1){
  16.         if(counter>=allocated_elements){
  17.             allocated_elements*=2;
  18.            
  19.             *name = (char**)realloc(*name, sizeof(int)*allocated_elements);
  20.             *group = (int*)realloc(*group, sizeof(int)*allocated_elements);
  21.             *fak_num = (char**)realloc(*fak_num, sizeof(int)*allocated_elements);
  22.         }
  23.    
  24.         if(fread(&size, sizeof(int), 1, fp)<=0){
  25.             break;
  26.         }
  27.         name[0][counter] = (char*)malloc(size+1);
  28.         if(fread(name[0][counter], sizeof(char), size, fp)<=0){
  29.             break;
  30.         }
  31.         name[0][counter][size]='\0';
  32.        
  33.        
  34.         if(fread(&group[0][counter], sizeof(int), 1, fp)<=0){
  35.             break;
  36.         }
  37.        
  38.         if(fread(&size, sizeof(int), 1, fp)<=0){
  39.             break;
  40.         }      
  41.         fak_num[0][counter] = malloc(size+1);
  42.         printf("%d %d\n\n", counter, size);
  43.         if(fread(fak_num[0][counter], sizeof(char), size, fp)<=0){
  44.             break;
  45.         }
  46.         fak_num[0][counter][size]='\0';
  47.        
  48.         counter++;
  49.     }
  50. }
  51.  
  52. void writeFile(FILE *fp){
  53.     int i=5;
  54.     char name[5] = "dadad";
  55.     int group = 50;
  56.     int j=6;
  57.     char fak_num[6] = "123456";
  58.    
  59.     fwrite(&i, sizeof(int), 1, fp);
  60.     fwrite(name, sizeof(char), 5, fp);
  61.     fwrite(&group, sizeof(int), 1, fp);
  62.     fwrite(&j, sizeof(int), 1, fp);
  63.     fwrite(fak_num, sizeof(char), 6, fp);
  64. }
  65.  
  66. int main(){
  67.     int num_of_records;
  68.     char **name;
  69.     int *group;
  70.     char **fak_num;
  71.    
  72.     FILE *fp;  
  73.     fp = fopen("file.bin", "rb");
  74.     readFile(&num_of_records, &name, &group, &fak_num, fp);
  75.     //fp = fopen("file.bin", "wb");
  76.     //writeFile(fp);
  77.     //writeFile(fp);
  78.     //writeFile(fp);writeFile(fp);
  79.     int i;
  80.     for(i=0; i<4; i++){
  81.         printf("%s %d %s\n", name[i], group[i], fak_num[i]);
  82.     }
  83.    
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement