Yo lo haria a la hora de presentarlos en pantalla, ya que es mejor cuando sabes el numero de elementos que hay.
Para ello, o bien usas asignacion dinamica de memoria para un vector (alloc, malloc y demas) o bien estableces un vector de un tamanyo que sepas seguro que no va a quedarse corto. Si eres principiante te recomiendo la segunda.
Luego lees el fichero y vas guardando cada uno de las estructuras en dicho vector. Luego lo recorres buscando la mayor puntuacion, cuando la has encontrado, escribes los datos y anulas dicha posicion.
Mas o menos quedaria algo asi (hace tiempo que no uso C asi que no va a ser una respuesta totalmente funcional, pero la idea la tienes ahi):
struct {
char* nombre [20];
long int puntos;
} scores;
scores ranking [100]; //supongo que no vas a tener mas de 100 elementos
void main ()
{
//inicializar el vector con valores nulos (al menos la puntuacion)
for (int i = 0; i < 100; i++)
ranking[i].puntuacion = -1; // puntuacion negativa para saber que es una posicion no valida.
int num_scores = 0;
// tu codigo para leer y guardar cada pareja de datos en el vector ranking.
// Cada uno que guardes, suma 1 a num_scores para saber cuandos hay en total
int contador = num_scores;
int pos_temp = -1;
int puntos_temp = 0;
// Para ir presentandolos de forma ordenada
do
{
pos_temp = -1;
for (int i = 0; i < num_scores; i++)
{
if (ranking[i].puntos > puntos_temp)
{
puntos_temp = ranking[i].puntos;
pos_temp = i;
}
}
if (pos_temp != -1) // si se encontro alguno que cumpla...
{
printf ("%d .- Nombre: %s, Puntos: %d
", num_scores - contador + 1, ranking[pos_temp].nombre, ranking[pos_temp].puntos);
ranking[pos_temp].puntos = 0; // Para que a la proxima este ya no se cuente
contador--; // Al acabar una pasada valida, quitamos uno al total para buscar.
continue;
}
else
{ printf ("Algo ha fallado, contador sigue siendo mayor que cero pero no se encuentran datos que presentar en la pantalla
");
getchar ();
}
} while (contador > 0)
//mas codigo
}
Esta solucion, no es la unica ni digo que sea la mejor, pero lo he hecho de manera que vas claro el procedimiento. Espero que te sirva