Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Struct e stringa

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    2

    problema con struct e stringa in C

    Salve a tutti è da molto che non torno a questo forum, ho un problema con C
    Ho una struct nodo del tipo

    struct vertice{
    int data;
    double a;
    char *s;
    struct vertice *vertice_successivo;
    };

    typedef struct vertice V;

    e devo aggiungere un vertice con un intero, un double ed una stringa

    //AGGIUNGI VERTICE
    contatore++;
    printf("\n vertice(%d) da aggiungere",contatore);
    printf("\n inserisci numero double ");
    scanf("%lf",&nd);
    printf("\n inserisci stringa ");
    scanf("%s",&s);
    origine = aggiungi_vertice(origine, contatore, nd, s);


    V* aggiungi_vertice(V*origine, int d, double nd, char *stringa){
    V* n=(V*)malloc(sizeof(V));
    n->data = d;
    n->a = nd;
    n->s = stringa;
    n->vertice_successivo=origine;
    return n;
    }

    il mio problema è banale, la gestione della stringa nel nodo in fase di stampa

    printf("(%d)(%lf)(%s) -> ", origine->data, origine->a, origine->s);

    dove sbaglio, grazie anticipatamente

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quello che hai dentro la struct è solo un puntatore ad una stringa.

    Prima di usarlo devi allocare la stringa con la malloc.

    Dopo l'allocazione, la copia avviene con la funzione strcpy, non con un semplice assegnamento.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    2
    risolto grazie oregon!!

    nella struct ho sostituito *char s con char s[30];

    l'assegnazione era già fatta nel nodo

    nella funzione ho sostituito
    n->s =stringa con strcpy(n->s, &stringa);

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se stringa è il nome della stringa da copiare basta

    strcpy(n->s, stringa);

    dato che il nome è già il puntatore alla stringa
    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.