Allora il primo programma l ho corretto in questo modo..ora va meglio??

codice:
#include <stdio.h>
#include <stdlib.h>

float* Allocation_Array(int a)
{
      int i;
      float *arr;
       
      arr = (float*) malloc(sizeof(float) * a);
      
      if (arr == NULL)
      {
          free (arr);
          return NULL;
      }

      for(i=0; i<a; i++){
          printf("Valore vet[%d] : ",i);
          scanf("%f", &arr[i]);
      }
      return (arr);
}

int main()
{
      FILE *fp;
      float *vet;
      int ele;
      
      printf("\t\tSCRITTURA DI UN ARRAY IN UN FILE");
      printf("\n\nSpecifica la lunghezza dell'array: ");
      scanf("%d", &ele);
      printf("\n");
      
      vet = Allocation_Array(ele);
      
      fp = fopen("C:/Documents and Settings/Ale/Documenti/C/Array.dat", "w");
      
      if(fp != NULL)
          fwrite(vet, sizeof(ele), ele, fp);
      else
      {
          perror("Apertura file fallita");
          exit(1);
      }
      
      fclose(fp);
      return 0;
}
Per il secondo programma quindi devo dichiarare nuovamente le variabili e rispecificare la lunghezza dell'array??Se si qual'è il vantaggio dei file (pensavo ke leggendo il file precendete capisse da solo quanto fosse lungo l array e coi numeri farci qualunque operazione..)