School-Coding-Cpp/sfusi/es03_foschini_binaryfile.c

63 lines
1.2 KiB
C

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 16/04/2025
es03:
Scrivi una funzione che preso in ingresso il nome di un file contenente
interi, lo modifichi in modo da contenere gli stessi interi ma in ordine
decrescente.
*/
#include <stdio.h>
#define SIZE 1000+1
void leggiNumeri(FILE *file);
int main(void) {
FILE *file = fopen("file.bin", "rb");
if (file != NULL) {
leggiNumeri(file);
fclose(file);
} else {
perror("Error (source)");
}
return 0;
}
void leggiNumeri(FILE *file) {
int numeri[SIZE];
int i = 0;
while (fread(&numeri[i], sizeof(int), 1, file) == 1) {
i++;
}
for (int j = 0; j < i - 1; j++) {
for (int k = j + 1; k < i; k++) {
if (numeri[j] < numeri[k]) {
int temp = numeri[j];
numeri[j] = numeri[k];
numeri[k] = temp;
}
}
}
for (int j = 0; j < i; j++) {
printf("%d ", numeri[j]);
}
printf("\n");
file = fopen("file.bin", "wb");
if (file != NULL) {
fwrite(numeri, sizeof(int), i, file);
fclose(file);
} else {
perror("Error (write)");
}
}