Facebook
From Melodic Water Vole, 3 Years ago, written in Plain Text.
This paste is a reply to Untitled from Gamboge Cheetah - go back
Embed
Viewing differences between Untitled and Re: Untitled
#include 
#include 

int main(){
    FILE *fp;

    //test purposes - populate the binary file
    //task 2.a
    if((fp = fopen("binaryfile1", "wb")) == NULL){
        printf("Cannot open file. \n");
        exit(1);
    }


    int num;
    //int arr_count = 0;\n    while(scanf("%d", &num) != EOF){
        if(fwrite(&num, sizeof(int), 1, fp) != 1){
            printf("Write error occured when writing nums. \n");
            exit(1);
        }
        //arr_count++;\n    }

    fclose(fp);

    //exercises
    //READ FILE
    if((fp = fopen("binaryfile1", "rb")) == NULL){
        printf("Cannot open file. \n");
        exit(1);
    }
    
    int odd = 0;
    int even = 0;
    //int arr[arr_count];

0;

    int *arr;
    arr = (int*) malloc(sizeof(int));

    int res;
    int iter = 0;
    while((res = fread(&num, sizeof(int), 1, fp)) != 0){
        if(res != 1){
            printf("Read error occured. \n");
            exit(1);
        }else{
            //arr[i] = num;\n            if(iter != 0){
                arr = realloc(arr, (iter+1) * sizeof(int));
            }
            arr[iter] = num;
            iter++;
            if(num % 2 == 0) {
                even++;
            }else{
                odd++;
            }
        }
    }

    //task 2.b
    printf("Number of even numbers in binary file is %d\n", even);
    printf("Number of odd numbers in binary file is %d\n", odd);

    fclose(fp);

    //task 2.v
    FILE *txt;

    if((txt = fopen("txtfile1", "w")) == NULL){
        printf("Cannot open file. \n");
        exit(1);
    }

    //sort array
    for(int i = 0; i < iter - 1; i++){
        for(int j = 0; j < iter - i - 1; j++){
            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }

    for(int i =  0; i < iter; i++){
        fprintf(txt, "%d ", arr[i]);
    }

    free(arr);

    fclose(txt);
    
    return 0;
}