Buongiorno, ho un problema con la realizzazione di questo codice:
creo una struttura così fatta :
struct docente {
char nome[N];
char cognome[N];
struct permesso *lista_p;
struct dipartimento *ptr;
};
creo un vettore di struct docente che siano collegati ad altre due strutture così fatte:
struct permesso{
int data;
int targa;
};
struct dipartimento{
int rif_dip;
int telefono;
};
il codice completo è il seguente:
#include <stdio.h>
#include <stdlib.h>
#define N 15
#define dim 3
struct docente {
char nome[N];
char cognome[N];
struct permesso *lista_p;
struct dipartimento *ptr;
};
struct permesso{
int data;
int targa;
};
struct dipartimento{
int rif_dip;
int telefono;
};
int main(void) {
struct docente V[dim];
int j;
for(j=0;j<dim;j++){
scanf("%s",V[j].nome);
scanf("%s",V[j].cognome);
scanf("%d",&V[j].lista_p->data);
scanf("%d",&V[j].lista_p->targa);
scanf("%d",&V[j].ptr->rif_dip);
scanf("%d",&V[j].ptr->telefono);
}
for(j=0;j<dim;j++)
{
printf("Il nome è: %s il cognome è : %s la data del permesso è: %d la targa associata è: %d il riferimento del dipartimento associato è: %d ed il numero di telefono del dipartimento è: %d",V[j].nome,V[j].cognome,V[j].lista_p->data,V[j].lista_p->targa,V[j].ptr->rif_dip,V[j].ptr->telefono);
}
return EXIT_SUCCESS;
}
Dunque, inizio a far girare il programma e dopo aver digitato :nome,cognome e data mi arriva un messaggio di errore da windows che mi dice : il programma "x.exe" ha smesso di funzionare.
Normalmente utilizzo eclipse, pertanto pensando che fosse un problema della piattaforma, ho provato a far girare il tutto con codeblocks ma purtroppo mi dà il solito errore.
Dunque il codice prevede di assegnare ai docenti di un corso di laurea una serie di permessi di parcheggio, definiti attraverso una data ed una targa associata, per capire se funzionava ho semplificato il codice ed ho dichiarato che vi sia un solo permesso per ogni prof.
altrimentio avrei dovuto dichiarare una struct così fatta:
struct permesso{
int data;
int targa;
struct permesso *prox; // classica lista
};
Ripeto in genere provo il codice senza l'utilizzo delle funzioni come scritto sopra dopodichè riarrangio il tutto utilizzo le funzioni.
La domanda mia è questa:
Se il puntatore alla struttura serve per legare o concatenare strutture , come mai il mio vettore di struct docente al cui interno della struttura sono stati dichiarati
due puntatori alle strutture permesso e dipartimento non fà ciò?
struct docente {
char nome[N];
char cognome[N];
struct permesso *lista_p;
struct dipartimento *ptr;
};
struct permesso{
int data;
int targa;
};
struct dipartimento{
int rif_dip;
int telefono;
};