Como puedo controlar el final de un archivo de texto, que está formado por conjuntos de datos (estructuras) sin tener que leer la última estructura 2 veces? Ver ejemplo:
/**** calcula la edad media de todos los registros en el fichero dado ****/
void busca(FILE * p, struct datos * data)
{
float media=0; //acumula las edades
int num=0; //numero de registros leidos
while(!feof(p)) //controlamos que hemos llegado al final del fichero
{
fscanf(p,"%s",data->nom);
fscanf(p,"%s",data->apel1);
fscanf(p,"%s",data->apel2);
fscanf(p,"%s",data->tfno);
fscanf(p,"%d",&data->edad);
media+=(data->edad);
num++;
};
printf(" La edad media de todos los registros del fichero es: %.2f",media/num);
/* %.2f modifica la salida del printf para mostrar solo 2 decimales del resultado */
}