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

    [c] problema con struct e allocazione memoria

    Buonasera, ho un problema con gli struct e volevo un consiglio da voi. Io devo creare un programma che ha n stazioni in cui passano un numero variabile di treni. Ho pensato quindi di fare uno struct che rappresenti i treni ed è questo:

    codice:
    typedef struct treno{
    	char id[10];
    	int oraArr;
    	int oraPart;
    }treno;
    Poi ho fatto lo struct per le stazioni :
    codice:
    typedef struct stazione{
    	char id[10];
    	int n;
    	treno treni[];} stazione;
    ora come faccio a impostare la dimensioni dell'array "treni" di una stazione ad esempio (stazione stazioni[ j ]; stazione[ j].treni)?

    Grazie in anticipo per la risposta

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    O imposti una dimensione massima, ad esempio

    treno treni[10];

    o usi un puntatore per l'allocazione dinamica quando serve

    treno *treni;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    no non posso mettere una lunghezza standard per l'array perchè sono di dimensioni diverse.

    Io ho fatto questo:
    codice:
    stazioni[j].treni=realloc(stazioni[j].treni, ntreni*sizeof(treno));
    è corretto?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ... assicurati che il valore iniziale del puntatore prima della prima realloc sia NULL
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Perchè in esecuzione mi da "Segmentation fault (Core dump)"

  6. #6
    Mi da errore alla seconda stazione... credo che ci sia qualcosa di sbagliato con i puntatori

  7. #7
    ok risolto

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Meglio così ...
    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.