|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
[C] problema con funzione
ciao! ho fatto una funzione che però mi da dei problemi... vorrei sapere dove sbaglio per favore.
la funzione dovrebbe restituire una lista di utenti che sono inseriti all interno di una tabella hash, dove il singolo elemento rapprenseta i dati dell utente: key(nome) e value(un valore). questa lista va scritta nel buffer della struttura m (m->buffer) e deve contenere le chiavi presenti nella tabella hash separatate da '\0'. es: paolo'\0'marco'\0'giulio'\0' e cosi via... tutti i parametri passati sono allocati e vanno bene. il problema è proprio il codice della funzione. /* @description -- (comando list) invia la lista degli utenti connessi @param dati -- puntatore all elemento hash che contiene i dati dell utente client @param m -- puntatore alla struttura del messaggio da inviare @returns -- */ static void list(hashElement_t* dati, message_t* m){ hashElement_t* plist; int i; int spazio=0; char* s; pthread_mutex_lock(&(stanza->lock)); /*mi trovo lo spazio necessario per contenere le chiavi esistenti*/ for(i=0;i<11;i++){ plist=stanza->table[i]; while(plist!=NULL){ spazio=spazio + strlen(plist->key)+1; plist=plist->next; } } s=malloc(spazio*sizeof(char)); m->buffer=s; m->type='L'; for(i=0;i<11;i++){ plist=stanza->table[i]; while(plist!=NULL){ sprintf(s,"%s%c",plist->key,'\0'); s=s+strlen(s)+1; plist=plist->next; } pthread_mutex_unlock(&(stanza->lock)); } if(sendMessage(dati->value,m)==-1){ fprintf(stderr,"Errore in 'sendMessage'.\n"); exit(EXIT_FAILURE); } return; } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
nessuno mi puo aiutare nel capire dove sbaglio?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:04.



















