#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; 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++; } 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]; 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; 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; }