24-09-2005, 10:58
|
#5
|
|
Member
Iscritto dal: Sep 2005
Messaggi: 39
|
il file studente sono riuscito a crearlo...adesso ho problemi con la funzione che aggiorna il file... questo algoritmo mi segnala 4 warning e 2 errori che mi stanno facendo impazzire
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
short day;
short month;
short year;
char cognome[15];
char nome [15];
int matricola;
// parametri che verranno aggiornati ad ogni data
short n_esamisup; // parametro che verrā aggiornato ad ogni data
float media_ar_esami;
short cred_acqui;
}studente;
FILE *fp,*fpupdate;
//prototipo funzione aggiorna studente
studente update (studente STUDENTE);
void main ()
{
studente STUDENTE;
char nome[10];
//apro il file dati
if ((fp = fopen("Michele.dat","rb")) == NULL)
{
puts ("ERRORE NELL'APERTURA DEL FILE");
exit(1);
}
//creo il nuovo file aggiornata
printf ("Inserisci il nome del nuovo file aggiornato:\n");
fflush(stdin);
scanf ("%s",&nome);
strcat(nome,".dat");
if ((fpupdate = fopen (nome,"wb")) == NULL)
{
puts ("ERRORE NELL'APERTURA DEL FILE");
exit(1);
}
//leggo il primo record creato nel file precedente
fread(&STUDENTE,sizeof(studente),1,fp);
while (!feof(fp)) /*fino a quando il file "vecchio" non č finito*/
{
//richiama la funzione per aggiornare il file
STUDENTE = update (STUDENTE);
/*scrivo le informazioni aggiornate nel nuovo file*/
fwrite = (STUDENTE,sizeof(studente),1,fpupdate);
//legge record successivo nel file dati precedente
fread = (STUDENTE,sizeof(studente),1,fp);
} fclose(fp);
fclose(fpupdate);
}
studente update (studente STUDENTE)
{
printf ("Inserisci la data (gg/mm/aaaa):\n");
scanf ("%d%c%d%c%d", &STUDENTE.day,&STUDENTE.month,&STUDENTE.year);
printf ("Inserisci il cognome dello studente (max 15 caratteri)\n");
scanf ("%s",&STUDENTE.cognome);
printf ("Inserisci il nome dello studente (max 15 caratteri)\n");
scanf ("%s",&STUDENTE.nome);
printf ("Inserisci la matricola dello studente\n");
scanf ("%d",&STUDENTE.matricola);
printf ("Inserisci gli esami che ha superato\n");
scanf ("%d",&STUDENTE.n_esamisup);
printf ("Inserisci la media aritmetica degli esami\n");
scanf ("%f",&STUDENTE.media_ar_esami);
printf ("Inserisci i crediti acquisiti\n");
scanf ("%d",&STUDENTE.cred_acqui);
return (STUDENTE);
}
Gli errori e warning stanno tutti dove il carattere č rosso...
|
|
|