Esercizio [C]
Sto cercando di svolgere un tema di esame ma non riesco.
L'esercizio mi chiede di realizzare un programma che legga un elenco contenente i dati relativi agli studenti ed esegua successivamente delle elaborazioni
L'elenco è strutturato nel seguente modo.
numero di studenti di cui sono memorizzate le informazioni
numero di matricola
anno di iscrizione
cognome dello studente(una sola parola)
anno di nascita.
Prima di fare le elaborazioni volevo provare a stampare l'elenco ma non ci riesco.
il programma che hoo scritto è questo
L'esercizio mi chiede di realizzare un programma che legga un elenco contenente i dati relativi agli studenti ed esegua successivamente delle elaborazioni
L'elenco è strutturato nel seguente modo.
numero di studenti di cui sono memorizzate le informazioni
numero di matricola
anno di iscrizione
cognome dello studente(una sola parola)
anno di nascita.
Prima di fare le elaborazioni volevo provare a stampare l'elenco ma non ci riesco.
il programma che hoo scritto è questo
#include <stdio.h> #include<string.h> #define N 10 struct alunni { int matricola [3]; int anno_iscrizione [3]; char *cognome; int anno_nascita [3]; }; struct alunni *genera_alunni(int n){ struct alunni* student = (struct alunni*)(malloc(sizeof(struct alunni)*n)); return student; } int main(){ FILE *fin = fopen ("elenco.txt", "r"); int studenti = 0; fscanf(fin, "%d", &studenti); struct alunni *rs = genera_alunni(studenti); printf("Lettura elenco\n"); while(!feof(fin)){ int matricola; int anno_iscrizione; char nome [N]; int anno_nascita; fscanf(fin, "%d, %d, %s, %d", &matricola, &anno_iscrizione, nome, &anno_nascita); printf("%d, %d, %s, %d", matricola, anno_iscrizione, nome, anno_nascita); } return 0; }
Risposte
Credo che l' errore sta nella definizine della struttora.
Come mai per i campi matricola, anno_iscrizione e anno_nascita dichiari dei vettori?
Inoltre, se utilizzi i file di testo, o binari, non puoi dichiarare un puntatore di un tipo, ma nel caso del campo cognome, devi dichiarare un vettore statico di char.
ecco come dovresti scrivere la strutture:
Per la lettura del file utilizza:
Per la dichiarazione di rs, ovviamente sarà:
Come mai per i campi matricola, anno_iscrizione e anno_nascita dichiari dei vettori?
Inoltre, se utilizzi i file di testo, o binari, non puoi dichiarare un puntatore di un tipo, ma nel caso del campo cognome, devi dichiarare un vettore statico di char.
ecco come dovresti scrivere la strutture:
typedef struct alunni { int matricola; int anno_iscrizione ; char cognome[30]; // è necessario dichiarare un vettore statico int anno_nascita; }alunni;
Per la lettura del file utilizza:
while (!feof(fin)) { if (fread(&rs, sizeof(alunni), 1, fin) { // scrivi a video il record } }
Per la dichiarazione di rs, ovviamente sarà:
... alunni rs; ...
Per quanto riguarda i campi matricola ecc ero soprapensiero e per sbaglio gli ho dicharati vettori.
Grazie per l'aiuto.
Grazie per l'aiuto.
Di nulla!