|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
[C] Array di strutture
Ciao. Ho un problema ad allocare un array di strutture in modo dinamico.
typedef struct { char nome[MAX]; char cognome[MAX]; }persona; persona *vett; Adesso supponete che in nome[] e in cognome[] ci siano due stringhe strcpy( vett[i].nome , nome ); strcpy( vett[i].cognome , cognome ); Mi da errore di segmentazione quando arriva alle due strcpy quando lo lancio. Dove sbaglio? Grazie a tutti. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
Ah scusate ovviamente ho dimenticato questo.
vett = (persone*)malloc(n*sizeof(persone)) dove n è il numero di elementi nell'array. L'errore però persiste, |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non mi sembra che ci siano errori
Magari il problema è altrove. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
Infatti il problema era altrove. Ora però non riesco a fare una cosa.
typedef struct { int **matrice; }elemento; elemento *vett; Come faccio a risalire al numero di righe della matrice una volta che l'ho allocata??? |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 608
|
Quote:
Cioè: strcpy( vett[i]->nome , nome ); strcpy( vett[i]->cognome , cognome ); Oppure ho detto una castroneria?
__________________
Intel Core2Quad Q6600 2,4GHz @ 3,0 GHz 2 Gb RAM 667 MHz ATI HD2900XT |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
NOn mi interessa tanto ho risolto. Il secondo problema invece vorrei risolvere.
|
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() l'array è dichiarato con un solo livello di indirezione dal tipo struct "persona" e siccome le parentesi quadre "redirezionano" di un livello, vett[i] è una struct e non un puntatore. tra l'altro se anche avesse sbagliato in quel senso non ci sarebbe arrivato al segmentation fault perché non sarebbe riuscito a compilare. |
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
se ho capito cosa intendi non si può: devi per forza segnartelo in una variabile durante l'allocazione, magari in un campo della struct.
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 608
|
Quote:
__________________
Intel Core2Quad Q6600 2,4GHz @ 3,0 GHz 2 Gb RAM 667 MHz ATI HD2900XT |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Modifica la struttura così: typedef struct { int **matrice; int righe; int colonne; }elemento; |
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
Eppure su un sito avevo trovato una formula:
sizeof(array)/sizeof(array[0]) che mi davail numero di elementi di un array. Pensavo che per la matrice ci fosse qualcosa di simile |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
Questa formula dovrebbe funzionare solo per gli array allocati staticamente (nello stack). |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quella è per la matrice allocata così:
int matrice[10][5]; |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Si` la mia spiegazione non era KISS abbastanza =P
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:02.





















