PDA

View Full Version : [C]problemi con la scansione di array di tipi non primitivi


santaclause83
07-05-2007, 14:21
se io ho un array di tipi non primitivi definiti con delle struct e lo voglio scorrere,il compilatore mi dà errore se faccio un

while(array_di_tipo[i] != NULL){esegui...}

mi dice-->"invalid operands to binary !="

metodi alternativi?
thanxalot

andbin
07-05-2007, 14:26
se io ho un array di tipi non primitivi definiti con delle struct e lo voglio scorrere,il compilatore mi dà errore se faccio un

while(array_di_tipo[i] != NULL){esegui...}Funzionerebbe se array_di_tipo[i] fosse un puntatore, cioè se l'array contenesse puntatori a strutture ad esempio.

Se hai un array, saprai pure la dimensione, no? Fai un ciclo for.

santaclause83
07-05-2007, 15:02
void list(t_mat* insieme[]){

int i;
t_mat* temp;

i = 0;


temp = calloc(1,sizeof (*temp));


while(insieme[i] != 0){

temp = insieme[i];
printf("%s(%d;%d)\n",temp->nomemat,temp->r,temp->c);
i++;

}

}


il metodo dovrebbe stampare nome righee colonne della matrice,adesso compila,ma da un segmentation fault che non so bene da dove arrivi...

andbin
07-05-2007, 15:16
void list(t_mat* insieme[]){Ah, allora è un array di puntatori!


int i;
t_mat* temp;

i = 0;

temp = calloc(1,sizeof (*temp));

while(insieme[i] != 0){

temp = insieme[i];
printf("%s(%d;%d)\n",temp->nomemat,temp->r,temp->c);
i++;
}
}Perché devi fare tutto 'sto casino solo per accedere ai campi della struttura?? Non ti basta fare insieme[i]->nomemat ?

Comunque sei sicuro che nell'array ad un certo punto ci sia un puntatore NULL (che fa quindi da terminatore dell'array)??

santaclause83
07-05-2007, 15:37
void list(t_mat insieme[],int lung){


int i = 0;
while(i != lung){

printf("%s(%d;%d)\n",insieme[i].nomemat,insieme[i].r,insieme[i].c);
i++;

}

}

alla fine l'ho risolta così perchè coi puntatori facevo confusione,non c'è un modo simile per evitare tutte le volte di metterci il parametro con il numero degli elementi inseriti?