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);
}
}