Salve ragazzi. Vorrei sapere se è corretto scrive cosi questa funzione:
codice:
void insrec(char* fname1, char* fname2, Record rec) {
	FILE* f1 = fopen(fname1, "rb");
	FILE* f2 = fopen(fname2, "wb");
	if(f1 == NULL || f2 == NULL) {
		printf("Errore nell'apertura di uno dei due files\n");
		return 0;
	}
	Record* ptrRec;
	while(!feof(f1)) {
		ptrRec = malloc(sizeof(Record));
		fread(ptrRec, sizeof(Record), 1, f1);                         <--MIO DUBBIO, GIUSTO?
		if(ptrRec->value >= rec.value) {
			fwrite(&rec, sizeof(Record), 1, f2);                   <--MIO DUBBIO, GIUSTO?
			fwrite(ptrRec, sizeof(Record), 1, f2);                <--MIO DUBBIO, GIUSTO?
			free(ptrRec);
		}
		else {
			fwrite(ptrRec, sizeof(Record), 1, f2);                <--MIO DUBBIO, GIUSTO?
			free(ptrRec);
		}
	}
	fclose(f1);
	fclose(f2);
}
struttura di riferimento:
codice:
typedef struct {
    long       value;
    char       descr[30];
} Record;
Testo esercizio:
Scrivere una funzione void insrec(char *fname1, char *fname2, Record rec) che presi in input i nomi di due file binari (nelle stringhe fname1 e fname2), tali che il primo file contiene una sequenza di record di tipo Record ordinata in senso crescente rispetto al campo value, scrive nel secondo file i record del primo file aggiungendovi il record rec inserito in modo da rispettare l'ordinamento. Ad esempio, se il primo file contiene

{3, "vite"} {5, "dado"} {5, "dado2"} {8, "punta"}

e se rec = {2, "martello"} allora la funzione scrive nel secondo file

{2, "martello"} {3, "vite"} {5, "dado"} {5, "dado2"} {8, "punta"}

se invece rec = {6, "martello"}, la funzione scrive nel secondo file

{3, "vite"} {5, "dado"} {5, "dado2"} {6, "martello"} {8, "punta"}