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
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...
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?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.