Facebook
From Melodic Water Vole, 3 Years ago, written in Plain Text.
This paste is a reply to Untitled from Gamboge Cheetah - view diff
Embed
Download Paste or View Raw
Hits: 41
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.     FILE *fp;
  6.  
  7.     //test purposes - populate the binary file
  8.     //task 2.a
  9.     if((fp = fopen("binaryfile1", "wb")) == NULL){
  10.         printf("Cannot open file. \n");
  11.         exit(1);
  12.     }
  13.  
  14.  
  15.     int num;
  16.     while(scanf("%d", &num) != EOF){
  17.         if(fwrite(&num, sizeof(int), 1, fp) != 1){
  18.             printf("Write error occured when writing nums. \n");
  19.             exit(1);
  20.         }
  21.     }
  22.  
  23.     fclose(fp);
  24.  
  25.     //exercises
  26.     //READ FILE
  27.     if((fp = fopen("binaryfile1", "rb")) == NULL){
  28.         printf("Cannot open file. \n");
  29.         exit(1);
  30.     }
  31.    
  32.     int odd = 0;
  33.     int even = 0;
  34.  
  35.     int *arr;
  36.     arr = (int*) malloc(sizeof(int));
  37.  
  38.     int res;
  39.     int iter = 0;
  40.     while((res = fread(&num, sizeof(int), 1, fp)) != 0){
  41.         if(res != 1){
  42.             printf("Read error occured. \n");
  43.             exit(1);
  44.         }else{
  45.             if(iter != 0){
  46.                 arr = realloc(arr, (iter+1) * sizeof(int));
  47.             }
  48.             arr[iter] = num;
  49.             iter++;
  50.             if(num % 2 == 0) {
  51.                 even++;
  52.             }else{
  53.                 odd++;
  54.             }
  55.         }
  56.     }
  57.  
  58.     //task 2.b
  59.     printf("Number of even numbers in binary file is %d\n", even);
  60.     printf("Number of odd numbers in binary file is %d\n", odd);
  61.  
  62.     fclose(fp);
  63.  
  64.     //task 2.v
  65.     FILE *txt;
  66.  
  67.     if((txt = fopen("txtfile1", "w")) == NULL){
  68.         printf("Cannot open file. \n");
  69.         exit(1);
  70.     }
  71.  
  72.     //sort array
  73.     for(int i = 0; i < iter - 1; i++){
  74.         for(int j = 0; j < iter - i - 1; j++){
  75.             if(arr[j] > arr[j+1]){
  76.                 int temp = arr[j];
  77.                 arr[j] = arr[j+1];
  78.                 arr[j+1] = temp;
  79.             }
  80.         }
  81.     }
  82.  
  83.     for(int i =  0; i < iter; i++){
  84.         fprintf(txt, "%d ", arr[i]);
  85.     }
  86.  
  87.     free(arr);
  88.  
  89.     fclose(txt);
  90.    
  91.     return 0;
  92. }