01/02/08 19:32
AcId-SiMo88
Ciao a tutti, ho un problema che mi sta un po logorando con una semplice stampa di una lista!
Non riesco proprio a risolverlo nonstante l'aiuto di altri 2 ragazzi con un po + esperienza di me
invece che stampare ciò che vorrei, si vedono caratteri incomprensibili come se il puntatore fosse sbagliato, inoltre ho un segmentation fault, ma non riesco tuttavia a risolvere, ecco il codice:
listone.c
listone.h
main.c
scusate la prolissità, mi servirebbe conoscere il porblema entro domenica sera....lunedì ho l'esame su queste cose e un chiarimento mi farebbe molto bene...grazie in anticipo in ogni caso
Non riesco proprio a risolverlo nonstante l'aiuto di altri 2 ragazzi con un po + esperienza di me
invece che stampare ciò che vorrei, si vedono caratteri incomprensibili come se il puntatore fosse sbagliato, inoltre ho un segmentation fault, ma non riesco tuttavia a risolvere, ecco il codice:
listone.c
#include "listone.h" /*Aggiunta di un nuovo elemento alla lista*/ /*===================================================*/ void nuovo_elemento(LISTA *pLista) { int i; char NomE[LUNGH_MAX_NOME]; char CognomE[LUNGH_MAX_NOME]; int EtA; LISTA *puntante; LISTA *prec=NULL; LISTA *corr=pLista; puntante=(LISTA *)malloc(sizeof(LISTA)); if(puntante==NULL) { printf("C'è un problema con la memoria\n"); exit (-1); } printf("Inserire nome\n"); fflush(stdin); scanf("%s", &NomE); printf("Inserire cognome\n"); scanf("%s", &CognomE); printf("Inserire età\n"); scanf("%d", &EtA); /*===== Controlli sull'inserimento di campi corretti =====*/ for(i=0; NomE[i]=='Ciao a tutti, ho un problema che mi sta un po logorando con una semplice stampa di una lista!
Non riesco proprio a risolverlo nonstante l'aiuto di altri 2 ragazzi con un po + esperienza di me
invece che stampare ciò che vorrei, si vedono caratteri incomprensibili come se il puntatore fosse sbagliato, inoltre ho un segmentation fault, ma non riesco tuttavia a risolvere, ecco il codice:
listone.c#include "listone.h" /*Aggiunta di un nuovo elemento alla lista*/ /*===================================================*/ void nuovo_elemento(LISTA *pLista) { int i; char NomE[LUNGH_MAX_NOME]; char CognomE[LUNGH_MAX_NOME]; int EtA; LISTA *puntante; LISTA *prec=NULL; LISTA *corr=pLista; puntante=(LISTA *)malloc(sizeof(LISTA)); if(puntante==NULL) { printf("C'è un problema con la memoria\n"); exit (-1); } printf("Inserire nome\n"); fflush(stdin); scanf("%s", &NomE); printf("Inserire cognome\n"); scanf("%s", &CognomE); printf("Inserire età\n"); scanf("%d", &EtA); /*===== Controlli sull'inserimento di campi corretti =====*/ for(i=0; NomE[i]=='{parsed_message}';i++) if((NomE[i]>'a' && NomE[i]<'z')||(NomE[i]>'A' && NomE[i]<'Z')); strcpy(puntante->nome,NomE); for(i=0; CognomE[i]=='{parsed_message}';i++) if((CognomE[i]>'a' && CognomE[i]<'z')||(CognomE[i]>'A' && CognomE[i]<'Z')); strcpy(puntante->cognome,CognomE); if (EtA>0 && EtA<130) puntante->eta=EtA; /*===== =====*/ puntante->id++; puntante->succ=NULL; while((corr!=NULL)&&(puntante->id>corr->id)) { prec=corr; corr=corr->succ; } if(prec==NULL) { puntante->succ=pLista; pLista=puntante; } else { prec->succ=puntante; puntante->succ=corr; } } /*========================================================*/ void stampaLista(LISTA *pLista) { printf("\n"); prov=pLista; while (pLista->succ!=NULL) { printf("\nNome: %s \t\tCognome:%s \t\tEta: %d \n", pLista->nome, pLista->cognome,pLista->eta); pLista = pLista->succ; } printf("\n"); } /*============================================================*/ void pause(){ printf("Premere INVIO per continuare\n"); getchar(); }
listone.h#ifndef libc #include <stdio.h> #include <stdlib.h> #include <string.h> #define LUNGH_MAX_NOME 100 #define DIM_LISTA 50 typedef struct lst { char nome[LUNGH_MAX_NOME]; char cognome[LUNGH_MAX_NOME]; int eta; int id; struct lst *succ; } LISTA; void inizializzaLISTA(); void nuovo_elemento(LISTA *); void stampa_listone(); void stampaLista(LISTA *); void pause(); #endif
main.c/*Programma di sintesi sull'utilizzo di liste ordinate*/ #include <stdio.h> #include "listone.h" int main() { int scelta; LISTA array; LISTA *pLista; pLista=&array; do { printf("Benvenuto, premi uno dei seguenti tasti:\n"); printf("[0] Esci senza salvare\n"); printf("[1] Inserisci un nuovo elemento nella lista\n"); printf("[2] Modifica un elemento della lista\n"); printf("[3] Elimina un elemento della lista\n"); printf("[4] Salva il contenuto della lista\n"); printf("[5] Carica una lista preesistente\n"); printf("[6] Stampa la lista\n"); scanf("%d", &scelta); printf("\nHai scelto %d\n", scelta); switch(scelta) { case 0: printf("Ciao, a presto\n"); return 0; case 1: { nuovo_elemento(pLista); } break; case 6: { stampaLista(pLista); pause(); break; } default: { printf("Scelta non consentita, riprova\n"); break; } } } while(scelta); return 0; }
scusate la prolissità, mi servirebbe conoscere il porblema entro domenica sera....lunedì ho l'esame su queste cose e un chiarimento mi farebbe molto bene...grazie in anticipo in ogni caso';i++) if((NomE[i]>'a' && NomE[i]<'z')||(NomE[i]>'A' && NomE[i]<'Z')); strcpy(puntante->nome,NomE); for(i=0; CognomE[i]=='Ciao a tutti, ho un problema che mi sta un po logorando con una semplice stampa di una lista!
Non riesco proprio a risolverlo nonstante l'aiuto di altri 2 ragazzi con un po + esperienza di me
invece che stampare ciò che vorrei, si vedono caratteri incomprensibili come se il puntatore fosse sbagliato, inoltre ho un segmentation fault, ma non riesco tuttavia a risolvere, ecco il codice:
listone.c#include "listone.h" /*Aggiunta di un nuovo elemento alla lista*/ /*===================================================*/ void nuovo_elemento(LISTA *pLista) { int i; char NomE[LUNGH_MAX_NOME]; char CognomE[LUNGH_MAX_NOME]; int EtA; LISTA *puntante; LISTA *prec=NULL; LISTA *corr=pLista; puntante=(LISTA *)malloc(sizeof(LISTA)); if(puntante==NULL) { printf("C'è un problema con la memoria\n"); exit (-1); } printf("Inserire nome\n"); fflush(stdin); scanf("%s", &NomE); printf("Inserire cognome\n"); scanf("%s", &CognomE); printf("Inserire età\n"); scanf("%d", &EtA); /*===== Controlli sull'inserimento di campi corretti =====*/ for(i=0; NomE[i]=='{parsed_message}';i++) if((NomE[i]>'a' && NomE[i]<'z')||(NomE[i]>'A' && NomE[i]<'Z')); strcpy(puntante->nome,NomE); for(i=0; CognomE[i]=='{parsed_message}';i++) if((CognomE[i]>'a' && CognomE[i]<'z')||(CognomE[i]>'A' && CognomE[i]<'Z')); strcpy(puntante->cognome,CognomE); if (EtA>0 && EtA<130) puntante->eta=EtA; /*===== =====*/ puntante->id++; puntante->succ=NULL; while((corr!=NULL)&&(puntante->id>corr->id)) { prec=corr; corr=corr->succ; } if(prec==NULL) { puntante->succ=pLista; pLista=puntante; } else { prec->succ=puntante; puntante->succ=corr; } } /*========================================================*/ void stampaLista(LISTA *pLista) { printf("\n"); prov=pLista; while (pLista->succ!=NULL) { printf("\nNome: %s \t\tCognome:%s \t\tEta: %d \n", pLista->nome, pLista->cognome,pLista->eta); pLista = pLista->succ; } printf("\n"); } /*============================================================*/ void pause(){ printf("Premere INVIO per continuare\n"); getchar(); }
listone.h#ifndef libc #include <stdio.h> #include <stdlib.h> #include <string.h> #define LUNGH_MAX_NOME 100 #define DIM_LISTA 50 typedef struct lst { char nome[LUNGH_MAX_NOME]; char cognome[LUNGH_MAX_NOME]; int eta; int id; struct lst *succ; } LISTA; void inizializzaLISTA(); void nuovo_elemento(LISTA *); void stampa_listone(); void stampaLista(LISTA *); void pause(); #endif
main.c/*Programma di sintesi sull'utilizzo di liste ordinate*/ #include <stdio.h> #include "listone.h" int main() { int scelta; LISTA array; LISTA *pLista; pLista=&array; do { printf("Benvenuto, premi uno dei seguenti tasti:\n"); printf("[0] Esci senza salvare\n"); printf("[1] Inserisci un nuovo elemento nella lista\n"); printf("[2] Modifica un elemento della lista\n"); printf("[3] Elimina un elemento della lista\n"); printf("[4] Salva il contenuto della lista\n"); printf("[5] Carica una lista preesistente\n"); printf("[6] Stampa la lista\n"); scanf("%d", &scelta); printf("\nHai scelto %d\n", scelta); switch(scelta) { case 0: printf("Ciao, a presto\n"); return 0; case 1: { nuovo_elemento(pLista); } break; case 6: { stampaLista(pLista); pause(); break; } default: { printf("Scelta non consentita, riprova\n"); break; } } } while(scelta); return 0; }
scusate la prolissità, mi servirebbe conoscere il porblema entro domenica sera....lunedì ho l'esame su queste cose e un chiarimento mi farebbe molto bene...grazie in anticipo in ogni caso';i++) if((CognomE[i]>'a' && CognomE[i]<'z')||(CognomE[i]>'A' && CognomE[i]<'Z')); strcpy(puntante->cognome,CognomE); if (EtA>0 && EtA<130) puntante->eta=EtA; /*===== =====*/ puntante->id++; puntante->succ=NULL; while((corr!=NULL)&&(puntante->id>corr->id)) { prec=corr; corr=corr->succ; } if(prec==NULL) { puntante->succ=pLista; pLista=puntante; } else { prec->succ=puntante; puntante->succ=corr; } } /*========================================================*/ void stampaLista(LISTA *pLista) { printf("\n"); prov=pLista; while (pLista->succ!=NULL) { printf("\nNome: %s \t\tCognome:%s \t\tEta: %d \n", pLista->nome, pLista->cognome,pLista->eta); pLista = pLista->succ; } printf("\n"); } /*============================================================*/ void pause(){ printf("Premere INVIO per continuare\n"); getchar(); }
listone.h
#ifndef libc #include <stdio.h> #include <stdlib.h> #include <string.h> #define LUNGH_MAX_NOME 100 #define DIM_LISTA 50 typedef struct lst { char nome[LUNGH_MAX_NOME]; char cognome[LUNGH_MAX_NOME]; int eta; int id; struct lst *succ; } LISTA; void inizializzaLISTA(); void nuovo_elemento(LISTA *); void stampa_listone(); void stampaLista(LISTA *); void pause(); #endif
main.c
/*Programma di sintesi sull'utilizzo di liste ordinate*/ #include <stdio.h> #include "listone.h" int main() { int scelta; LISTA array; LISTA *pLista; pLista=&array; do { printf("Benvenuto, premi uno dei seguenti tasti:\n"); printf("[0] Esci senza salvare\n"); printf("[1] Inserisci un nuovo elemento nella lista\n"); printf("[2] Modifica un elemento della lista\n"); printf("[3] Elimina un elemento della lista\n"); printf("[4] Salva il contenuto della lista\n"); printf("[5] Carica una lista preesistente\n"); printf("[6] Stampa la lista\n"); scanf("%d", &scelta); printf("\nHai scelto %d\n", scelta); switch(scelta) { case 0: printf("Ciao, a presto\n"); return 0; case 1: { nuovo_elemento(pLista); } break; case 6: { stampaLista(pLista); pause(); break; } default: { printf("Scelta non consentita, riprova\n"); break; } } } while(scelta); return 0; }
scusate la prolissità, mi servirebbe conoscere il porblema entro domenica sera....lunedì ho l'esame su queste cose e un chiarimento mi farebbe molto bene...grazie in anticipo in ogni caso
aaa