Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [C] Liste a puntatori

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    9

    Problema in C con le liste a puntatori...

    salve a tutti! sono nuovo di questo forum e inizio subito con un grosso problema che proprio non riesco a capire come risolvere...

    mi scuso fin da ora se l'argomento può sembrare ai più al quanto banale ma io è da poco che sto studiando le liste a puntatori in C e subito mi è venuto un dubbio...mi spiego meglio:

    quando si tratta di liste con interi o float sembrano non esserci problemi...riesco a gestirle in maniera abbastanza agevole...

    il problema nasce quando voglio gestire una lista di parole...in una struttura anche semplicissima come quella che segue...

    typedef struct Parola{
    char* text;
    struct Parola *next;
    }Parola;

    come faccio a modificare e ad inserire una stringa nel campo Text ??? :master: :master: :master:

    grazie a tutti quelli che si interesseranno ad un eventuale risposta e scusate l'ignoranza

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Cosi' come hai scritto la struttura, tu memorizzi solamente il puntatore alle parole ...

    Quando aggiungi un elemento alla struttura, devi creare dinamicamente (funzione malloc) lo spazio per la stringa e assegnare il puntatore a quello contenuto nella struttura.

    Simmetricamente, quando elimini un elemento, devi usare la free per liberare la memoria allocata per la stringa.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    9
    si su questo ci sono...infatti a seguire nel codice verrebbe qualcosa del tipo

    struct Parola *Parolone;

    Parolone=(struct Parola *)malloc(sizeof(Parola));

    il problema che non riesco a risolvere nasce proprio adesso...ovvero nel momento in cui devo chiedere da tastiera una stringa e memorizzarla nel campo text della struttura...

    ...spero di essere stato un pò più chiaro adesso e grazie mille per l'interessamento nonchè la velocità nella risposta!...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No ... non hai letto bene ... ho scritto che devi "creare dinamicamente lo spazio per la stringa" ...

    Quindi, una volta che hai allocato la struttura, devi scrivere

    Parolone->text=(char *)malloc(50 * sizeof(char));

    per allocare, ad esempio, 50 caratteri nella tua stringa.
    Solo a questo punto potrai usare la stringa

    Parolone->text
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    9
    #include <stdio.h>
    #include <stdlib.h>

    int main (void)
    {
    typedef struct Parola{
    char* text;
    struct Parola *next;
    }Parola;

    struct Parola *Parolone;
    Parolone=(struct Parola *)malloc(sizeof(Parola));
    Parolone->text=(char *)malloc(50 * sizeof(char));

    arrivati a questo punto procedo chiedendo in input la stringa

    printf("Dammi la stringa\n");
    scanf("%s",&Parolone->text);
    printf("La benedetta parola è %s ?\n",Parolone->text);

    return;
    }

    ma ovviamente il tutto va in segmentation fault
    ...e non capisco il perchè... scusate ancora per l'ignoranza !

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    L'elemento text, per come lo hai dichiarato, e' GIA' un puntatore ... quindi devi scrivere

    scanf("%s", Parolone->text);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    9
    ti devo chiedere 1000 volte grazie !!!

    scusa per l'ultima svista ma ormai ero talmente tanto nel pallone che sono subito corso a postare invece di rivedere il codice

    grazie 1000 per la cordialità,per la velocità e per la disponibilità mi hai risolto proprio un bel problema anche se a voi potrebbe non sembrare così grosso


  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da mic666
    ti devo chiedere 1000 volte grazie !!!
    Figurati ...
    ... anche se a voi potrebbe non sembrare così grosso
    Beh ... in effetti sono problematiche di "base" ... ma per chi inizia, posso capire ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    9

    [C][Liste a Puntatori]Ci rinuncio...da solo non riesco...

    ...rieccomi qua dopo vari tentativi ...
    i suggerimenti che avevo chiesto prima servivano praticamente a svolgere quest'esercizio...

    Scrivere un programma che legge in input (scanf("%s", .)) una serie di parole. L’input termina quando l’utente inserisce la parola consistente in un singolo asterisco.
    Il programma inserisce le parole nei nodi di una lista a puntatori usando una struttura dati definita come segue.
    typedef struct TAGparola
    {
    char *text;
    struct TAGparola *next;
    } Nparola;
    Al termine dell’input, il programma scorre la lista cosi ottenuta e stampa tutte le parole nell’ordine in cui sono state inserite, ognuna su una riga...

    ci ho provato e riprovato ma niente da fare...se qualche anima pia vorrebbe scrivere il codice sono sicuro che voi ci mettereste circa 10 minuti...mentre io è tutto il pomeriggio che ci sbatto la testa...



    grazie anticipatamente a chi si cimenterà nell'impresa

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: [C][Liste a Puntatori]Ci rinuncio...da solo non riesco...

    Originariamente inviato da mic666
    se qualche anima pia vorrebbe scrivere il codice sono sicuro che voi ci mettereste circa 10 minuti...mentre io è tutto il pomeriggio che ci sbatto la testa...
    ... volesse ...

    ... e tu cosa impareresti? Nulla ...

    Riprovaci ... semmai si fanno le correzioni, ma un copia-incolla, almeno per me, non ti serve a nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.