PDA

Visualizza la versione completa : dubbio liste C


Metflar
18-01-2009, 21:48
ragazzi come posso tornare al primo nodo di una lista o a salvarmelo da qualche parte?
:)

oregon
18-01-2009, 22:01
Fuori da un preciso contesto e' una domanda troppo generica ...

Tornare da dove?

Metflar
18-01-2009, 22:04
Originariamente inviato da oregon
Fuori da un preciso contesto e' una domanda troppo generica ...

Tornare da dove?
praticamente mi sono accorto che riesco a stampare solo l'ultimo elemento quindi dovrei in un qualche modo riavvolgere :zizi:

oregon
18-01-2009, 22:21
Originariamente inviato da Metflar
praticamente mi sono accorto che riesco a stampare solo l'ultimo elemento quindi dovrei in un qualche modo riavvolgere :zizi:

?

Magari se mostri il codice ...

Metflar
19-01-2009, 16:53
Originariamente inviato da oregon
?

Magari se mostri il codice ...
allora:
in un sorgente db.c riempo la lista


//primo elemento
Fornitori* forn;
f=(Fornitori*)malloc(sizeof(Fornitori));/*questa appartiene al file main.c e la utilizzo usando extern...
f->piva=atoi(argv[0]);
f->Cognome=(char*)argv[1];
f->Nome=(char*)argv[2];
f->NomeDitta=(char*)argv[3];
f->Indirizzo=(char*)argv[4];
//altri elementi
for(j=2;j<=rec;j++){
forn->n=(Fornitori*)malloc(sizeof(Fornitori));
forn=forn->n;
forn->piva=atoi(argv[i]);
forn->Cognome=(char*)argv[i+1];
forn->Nome=(char*)argv[i+2];
forn->NomeDitta=(char*)argv[i+3];
forn->Indirizzo=(char*)argv[i+4];
i+=5;
}
forn->n=NULL;

in main.c la mostro su una tabella


while(f!=NULL){

char num[11];
sprintf(num,"%d",f->piva);

gchar* list[6]={num,f->Cognome,f->Nome,f->NomeDitta,f->Indirizzo};
gtk_clist_append(GTK_CLIST(lista_f),list);
f=f->n;
}

oregon
19-01-2009, 21:49
in un sorgente db.c riempo la lista


in main.c la mostro su una tabella

e quindi???

(In questo codice, comunque, mi sembra che molte cose non vadano ... ma attendo la domanda ...)

Metflar
20-01-2009, 14:42
Originariamente inviato da oregon
e quindi???

(In questo codice, comunque, mi sembra che molte cose non vadano ... ma attendo la domanda ...)
cosa? :zizi:

oregon
20-01-2009, 14:57
Beh ... per esempio, fare una cosa del genere

f->piva=atoi(argv[0]);

che senso ha, visto che argv[0] contiene il percorso e il nome dell'eseguibile?

E anche cose come

f->Nome=(char*)argv[2];

mi lasciano perplesso. Non stai infatti copiando la stringa ma semplicemente il puntatore ...

Metflar
20-01-2009, 16:11
Originariamente inviato da oregon
Beh ... per esempio, fare una cosa del genere

f->piva=atoi(argv[0]);

che senso ha, visto che argv[0] contiene il percorso e il nome dell'eseguibile?

E anche cose come

f->Nome=(char*)argv[2];

mi lasciano perplesso. Non stai infatti copiando la stringa ma semplicemente il puntatore ...
no scusa nn la funzione main ma una callback sqlite argv sono tutti i campi coinvolti nella query XD


int callback(void *NotUsed, int argc, char **argv, char **azColName)

:zizi:

oregon
20-01-2009, 18:51
Ah ... va bene, ma solo per argv[0] ...

La faccenda dei puntatori assegnati e' comunque strana ... devi usare la strcpy per copiare i dati ...

Loading