|
|||||||
|
|
|
![]() |
|
|
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: 12:09.


















