fwd: info liste

[email protected] Mon, 7 Mar 2005 15:19:42 +0100
Newsgroups gmane.comp.security.italian.devel
Message-ID <[email protected]>
--===============0334773698==
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Tolta sezione in html:
http://www.expita.com/nomime.html
Configuring Mail Clients to Send Plain ASCII Text

thnx
Koba (moderatore)

----- Forwarded message from Antonio s4tan Parata <s4tan(at)ictsc.it> -----
From: Antonio s4tan Parata <s4tan(at)ictsc.it>
Subject: info liste

Salve a tutti,

ho un grosso problema che proprio non riesco a risolvere. Sto' scrivendo un programma in C (premetto che non sono un drago in C, anzi) che fa uso delle liste. Inizialmente ho dichiarato la seguente struttura e variabile globale:


/* ------------  Codice -----------------*/
struct nodo_libro {
     char *titolo;
     struct nodo_libro *next;
};

typedef struct nodo_libro lista_libri;
typedef lista_libri *ptr_lista_libri;

/* Variabili Globali */
ptr_lista_libri root_libri = NULL; 

/* ------------ Fine Codice ------------*/

in seguito o creato la seguente funzione che inserisce un nuovo elemento nella lista, usando la variabile globale:

/* ------------  Codice -----------------*/

void inserisci_libro (void) {
    char titolo[8000];
    
    ptr_lista_libri new_libro, prec_libro, curr_libro; // tre nuovi puntatori lista
    
    fflush(stdin);
    printf("Inserisci il nome del libro: ");    
    scanf("%s",titolo);
    
    new_libro = (ptr_lista_libri) malloc (sizeof(lista_libri));
    if (new_libro != NULL) { // creo il nuovo elemento della lista
        new_libro->titolo = titolo;
        new_libro->next = NULL;
          
        if (root_libri == NULL) { // controllo la var globale per vedere se la lista ? vuota
                  root_libri = new_libro;                       
        }
        else { // la lista contiene qualche elemento             
                curr_libro = root_libri;
                while (curr_libro!=NULL) { // scandisco tutta la lista fino alla fine
                                prec_libro = curr_libro;
                                curr_libro = curr_libro->next;                          
                }
                prec_libro->next = new_libro; // aggiungo l'elemento finale              
        }
    }

/* ------------ Fine Codice ------------*/


Il problema ? che se vado a stampare la lista (in particolare il titolo) mi succede la seguente cosa, visualizza un numero corretto di elementi (ovvero se ho inserito 3 elementi ho tre visualizzazioni), ma il titolo che mi visualizza e' sempre l'ultimo che ho inserito (quindi se ho inserito i titoli A,B e C, mi visualizza per 3 volte C).

Qualcuno puo' risolvere questo mio irritante problema???

Grazie mille,
s4tan



P.S.
Il ciclo che stampa gli elementi e' simile a ciclo che uso per scandire l'intera lista

----- End forwarded message -----

--===============0334773698==
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List
--===============0334773698==--