|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Nov 2010
Messaggi: 11
|
[C]Stampa elementi di una lista
Ciao a tutti! sto lavorando al progetto di un'applicazione distribuita client/server e mi sono bloccato su un problema stupido ma che mi impedisce di andare avanti..
Lato server, devo ricevere il nome indentificativo dei client che si connettono al server e inserirli in una lista. Ho dunque implementato la lista su un file separato in questo modo: Codice:
#include <stdlib.h> #include <stdio.h> #include <string.h> struct client { char* nome; struct client* next; }; struct client* testa = NULL; struct client* coda = NULL; void add(char* nome) { struct client* nuovo; nuovo = (struct client*)malloc(sizeof(struct client)); nuovo->nome = nome; nuovo->next = NULL; if(testa == NULL) { testa = nuovo; } else { coda->next = nuovo; } } void stampa() { struct client* p; p = testa; while(p != NULL) { printf("%s\n", p->nome); p = p->next; } } ovviamente non posto tutto il codice del server, ma solo la parte relativa all'utilizzo della lista: Codice:
memset(rcvbuff, 0, sizeof(rcvbuff)); //pulitura buffer ret = recv(c_sk, (void*)rcvbuff, sizeof(rcvbuff), 0); if(ret == -1) { perror("Server receive error!"); exit(1); } add(rcvbuff); stampa(); Come mai accade ciò? come mai viene perso il nome del primo client connesso? non riesco a trovare l'errore.. Grazie!! |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Nov 2010
Messaggi: 11
|
Ok! scusate ho risolto! ho cambiato la struttura definendo la dimensione dell'array e ho usato la strcpy(nuovo->nome, nome) per copiare il nome del client nel corrispondente elemento della struttura.. scusate ancora! xD
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:43.