Ho un file esistente su cui ci sono cognome nome matricola degli studenti.
Inserisco i dati in uno struct.Inserisco i voti e aggiorno lo struct.
Il problema e che devo poi ordinare per voto,ma non lo so fare.
riporto il programma:

codice:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define max 50
struct classe
{
	char cognome[20],nome[20];
	int matricola,voto;
};
int inseriscidati(FILE*,struct classe*);
void inseriscivoti(FILE*,struct classe*,int);
void ordinanum(FILE*,struct classe*,int);
void main()
{
	int n;
	struct classe elettrica[max];
	FILE*fp1,*fp2;
	fp1=fopen("studenti.txt","r+");
	fp2=fopen("num.txt","w+");
	if(fp1==NULL)
		printf("il file non esiste!");
	else
	{
		n=inseriscidati(fp1,elettrica);
		rewind(fp1);
		inseriscivoti(fp1,elettrica,n);
		ordinanum(fp2,elettrica,n);
	
	
	
	
	
	}
}
int inseriscidati(FILE*fp1,struct classe*elettrica)
{
	int n=0;
	while(fscanf(fp1,"%s %s %d",elettrica[n].cognome,elettrica[n].nome,&elettrica[n].matricola)!=EOF)
		n++;
	return n;
}
void inseriscivoti(FILE*fp1,struct classe*elettrica,int n)
{
	int i;
	printf("inserire voti alla classe:\n");
	for(i=0;i<n;i++)
	{
		printf("inserisci voto di %s %s = ",elettrica[i].cognome,elettrica[i].nome);
		scanf("%d",&elettrica[i].voto);
		fprintf(fp1,"%s %s %d %d \n",elettrica[i].cognome,elettrica[i].nome,elettrica[i].matricola,elettrica[i].voto);
	}
}