Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Inizializzazione elemento di una lista

    Ciao a tutti.

    Ecco il problema:
    Ho una lista di elementi che ho dichiarato così:
    codice:
    struct elemento
    {
    	char nome1[MAX_STR];
    	int valore1;
    	struct stati_iniziali *vett[MAX_PREC]; //vettore di puntatori a strutture
    	struct nodoRete *nextPtr; //prossimo elemento
    };
    
    struct stati_iniziali
    {
    	char nome2[MAX_STR];
    	int valore2;
    };
    Quando vado a creare un nuovo elemento uso la calloc per inizializzare i campi a zero:
    codice:
    newPtr = (struct elemento *)calloc(1, sizeof(struct elemento));
    Copio i dati nei vari campi con la strcpy:
    codice:
    strcpy(newPtr->nome, stringa1);
    strcpy(newPtr->vett[0]->nome2, stringa2);
    Il problema è la seconda strcpy che non va a buon fine perchè avendo utilizzato la calloc ho che:
    newPtr->vett[0]=NULL
    e quindi non sa dove andare a memorizzare stringa2.

    Come posso fare per risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] Inizializzazione elemento di una lista

    Originariamente inviato da spiderontheweb
    strcpy(newPtr->vett[0]->nome2, stringa2);
    [/CODE]
    Il problema è la seconda strcpy che non va a buon fine perchè avendo utilizzato la calloc ho che:
    newPtr->vett[0]=NULL
    e quindi non sa dove andare a memorizzare stringa2.

    Come posso fare per risolvere il problema?
    Non c'entra una mazza la calloc.
    Quel vett è un "array di puntatori a strutture di tipo 'struct stati_iniziali'".
    Allocando la struttura 'elemento' hai allocato anche lo spazio per quei N puntatori in vett. Nota che avendo usato la calloc hai anche azzerato la struttura e quindi anche i puntatori. Se l'avessi allocata con malloc, conterrebbero schifezze (molto probabilmente).

    La questione comunque non cambierebbe. Hai solo allocato spazio per i puntatori ma devi impostarli tu a qualcosa in modo che puntino a strutture di tipo 'stati_iniziali'.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Grazie.
    Ora è chiaro.

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.