matteo.pata
07-02-2011, 19:29
Ciao ragazzi ho problemi con questo pezzo di codice.
Devo prendere degli input da file caricarli in una lista.
nodo lista:
typedef struct persona{
char nome[150];
char sesso;
int denaro;
int eta;
int altezza;
int peso;
float colore_capelli;
float costituzione;
struct persona *next;
}persona;
persona* LunediUomini = NULL;
persona* MartediUomini = NULL;
persona* MercolediUomini = NULL;
persona* GiovediUomini = NULL;
persona* VenerdiUomini = NULL;
persona* SabatoUomini = NULL;
persona* DomenicaUomini = NULL;
persona* inserisci(persona *p,char *n,char carattere,int den,int eta,int alt,int peso,float col_cap,float cost)
{
persona *q = malloc(sizeof(persona)); /* creo il nodo*/
if(!q) {
fprintf(stderr,"Errore nell'allocazione del nuovo elemento\n");
exit(-1);
}
strcpy(q->nome,n);
q->sesso = carattere; /* Assegno le variabile passate come parametro*/
q->denaro = den;
q->eta = eta;
q->altezza = alt;
q->peso = peso;
q->colore_capelli = col_cap;
q->costituzione = cost;
q->next = p;
return q; /*ritorno la lista aggiornata*/
}
.........
..........
......... ALTRO CODICE QUI
........
else{
p=fopen(argv[1],"r");
if(p==NULL){
perror("Errore in apertura del file");
exit(1);
}
printf("BungaBunga\n");
while(!feof(p))
{
fscanf(p,"%s",linea);
printf("linea: %s\n",linea);
if(strcmp(linea, "in") == 0){
printf("entro nel if\n");
fscanf(p,"%s",linea);
printf("stringa %s\n",linea);
fscanf(p,"%c",&temp);
printf("carattere %c\n",temp);
fscanf(p,"%d",den);
fscanf(p,"%d",eta);
printf("eta %d\n",eta);
fscanf(p,"%d",&alt);
fscanf(p,"%d",&peso);
fscanf(p,"%f",&col_cap);
fscanf(p,"%f",&cost);
for(i=0;i<7;i++)
{
fscanf(p,"%c",temp);
printf("temp dopo for %c\n",temp);
if ((temp == 'L')&& (carattere == 'M')){
LunediUomini = inserisci(LunediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista lunedi\n");
stampa(LunediUomini);
}
if ((temp == 'M')&& (carattere == 'M'))
{
MartediUomini = inserisci(MartediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista martedi\n");
stampa(MartediUomini);
}
if ((temp == 'E')&& (carattere == 'M')){
MercolediUomini = inserisci(MercolediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista mercoledi\n");
stampa(MercolediUomini);}
if ((temp == 'G')&& (carattere == 'M')){
GiovediUomini = inserisci(GiovediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista giovedi\n");
stampa(GiovediUomini);}
if ((temp == 'V')&& (carattere == 'M')){
VenerdiUomini = inserisci(VenerdiUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista venerdi\n");
stampa(VenerdiUomini);}
if ((temp == 'S')&& (carattere == 'M')){
SabatoUomini = inserisci(SabatoUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista sabato\n");
stampa(SabatoUomini);}
if ((temp == 'D')&& (carattere == 'M')){
DomenicaUomini = inserisci(DomenicaUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista domenica\n");
stampa(DomenicaUomini);}
}
}
Mi da problemi sull'inserimento del carattere e non capisco il perchè.
Qualcuno mi può dare una mano per favore.
:help: :help: :help: :help:
Devo prendere degli input da file caricarli in una lista.
nodo lista:
typedef struct persona{
char nome[150];
char sesso;
int denaro;
int eta;
int altezza;
int peso;
float colore_capelli;
float costituzione;
struct persona *next;
}persona;
persona* LunediUomini = NULL;
persona* MartediUomini = NULL;
persona* MercolediUomini = NULL;
persona* GiovediUomini = NULL;
persona* VenerdiUomini = NULL;
persona* SabatoUomini = NULL;
persona* DomenicaUomini = NULL;
persona* inserisci(persona *p,char *n,char carattere,int den,int eta,int alt,int peso,float col_cap,float cost)
{
persona *q = malloc(sizeof(persona)); /* creo il nodo*/
if(!q) {
fprintf(stderr,"Errore nell'allocazione del nuovo elemento\n");
exit(-1);
}
strcpy(q->nome,n);
q->sesso = carattere; /* Assegno le variabile passate come parametro*/
q->denaro = den;
q->eta = eta;
q->altezza = alt;
q->peso = peso;
q->colore_capelli = col_cap;
q->costituzione = cost;
q->next = p;
return q; /*ritorno la lista aggiornata*/
}
.........
..........
......... ALTRO CODICE QUI
........
else{
p=fopen(argv[1],"r");
if(p==NULL){
perror("Errore in apertura del file");
exit(1);
}
printf("BungaBunga\n");
while(!feof(p))
{
fscanf(p,"%s",linea);
printf("linea: %s\n",linea);
if(strcmp(linea, "in") == 0){
printf("entro nel if\n");
fscanf(p,"%s",linea);
printf("stringa %s\n",linea);
fscanf(p,"%c",&temp);
printf("carattere %c\n",temp);
fscanf(p,"%d",den);
fscanf(p,"%d",eta);
printf("eta %d\n",eta);
fscanf(p,"%d",&alt);
fscanf(p,"%d",&peso);
fscanf(p,"%f",&col_cap);
fscanf(p,"%f",&cost);
for(i=0;i<7;i++)
{
fscanf(p,"%c",temp);
printf("temp dopo for %c\n",temp);
if ((temp == 'L')&& (carattere == 'M')){
LunediUomini = inserisci(LunediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista lunedi\n");
stampa(LunediUomini);
}
if ((temp == 'M')&& (carattere == 'M'))
{
MartediUomini = inserisci(MartediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista martedi\n");
stampa(MartediUomini);
}
if ((temp == 'E')&& (carattere == 'M')){
MercolediUomini = inserisci(MercolediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista mercoledi\n");
stampa(MercolediUomini);}
if ((temp == 'G')&& (carattere == 'M')){
GiovediUomini = inserisci(GiovediUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista giovedi\n");
stampa(GiovediUomini);}
if ((temp == 'V')&& (carattere == 'M')){
VenerdiUomini = inserisci(VenerdiUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista venerdi\n");
stampa(VenerdiUomini);}
if ((temp == 'S')&& (carattere == 'M')){
SabatoUomini = inserisci(SabatoUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista sabato\n");
stampa(SabatoUomini);}
if ((temp == 'D')&& (carattere == 'M')){
DomenicaUomini = inserisci(DomenicaUomini,stringa,carattere,den,eta,alt,peso,col_cap,cost);
printf("stampa lista domenica\n");
stampa(DomenicaUomini);}
}
}
Mi da problemi sull'inserimento del carattere e non capisco il perchè.
Qualcuno mi può dare una mano per favore.
:help: :help: :help: :help: