codice:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define NUM_STUDENTI 2
#define NUM_VOTI 4
typedef struct {
int Matricola;
char Nome [20];
int Anno;}Studente;
typedef struct {
int Matricola;
char Provincia[20];
int CodInsegnmento;
int voto[NUM_VOTI];}Esame;
main()
{
int I,J,somma=0;float media;
FILE *fp1;
FILE *fp2;
Studente dati1;
Esame dati2;
fp1=fopen("studenti.dat", "wb");
if(fp1==NULL){fprintf(stderr, "errore di apertura");exit(1);}
printf("Acquisizione struttura Studente\n\n");
for(I=0;I<NUM_STUDENTI;I++)
{
printf("Matricola: ");scanf("%d",&dati1.Matricola);
printf("Nome studente: ");scanf("%s", dati1.Nome);
printf("Anno corso: ");scanf("%d", &dati1.Anno);
fwrite(&dati1, sizeof(dati1), 1, fp1);}
fclose(fp1);
fp2=fopen("Esami.dat", "wb");
if(fp2==NULL){fprintf(stderr, "Errore di apertura");exit(1);}
printf("Acquisizione struttura Esame\n\n");
for(J=0;J<NUM_STUDENTI;J++)
{
printf("Matricola: ");scanf("%d",&dati2.Matricola);
printf("Provincia: ");scanf("%s",dati2.Provincia);
printf("Codice insegnamento: ");scanf("%d", &dati2.CodInsegnmento);
for(I=0;I<NUM_VOTI;I++){
printf("Voti studente: ");scanf("%d", &dati2.voto);
somma=somma+dati2.voto;}
media=somma/NUM_VOTI;
fwrite(&dati2, sizeof(dati2), 1, fp2);}
fclose(fp2);
fp1=fopen("studenti.dat", "rb");
if(fp1==NULL){fprintf(stderr, "Errore di apertura");exit(1);}
while(fread(&dati1, sizeof(dati1),1,fp1)!=0)
if(strcmp(dati1.Matricola, dati2.Matricola)==0)
{printf("Media= %f",media);}
fclose(fp1);
fp2=fopen("esami.dat", "rb");
if(fp2==NULL) {fprintf(stderr, "Errore di apertura");exit(1);}
while(fread(&dati2, sizeof(dati2), 1, fp2)!=0)
{printf("Nome %s media %f\n",dati1.Nome,media);}
fclose(fp2);
}
ho provato a modificare il codice in questo modo...
sono sempre bloccato...EXC_BAD_ACCESS l'errore riscontrato!
qualche suggerimento per ottenere l'elenco degli studenti con media sup a 27?
saluti