Ciao! sto facendo un programma client/server per lo scambio di file, come prima cosa volevo far inserire al client il nome utente con il quale identificarsi (attraverso lo stdin), purtroppo dal client non riesco a immettere nessun nome e la read sul server mi mostra che dal socket ritorna parti del testo di indicazione che faccio leggere al client.

posto il codice
codice:
----SERVER----

void identificazione(int sock){
	
	int i=-1;
	char nome[1024];
	FILE *fd;
	
	char *testo = (char *) malloc( strlen("Inserire Username: ")+1);
	
	if(testo==NULL){
		printf("ERRORE SERVER: testo descrittivo.\n");
		exit(0);
	}
	
	sprintf(testo, "%s", "Inserire Username: ");
	
	/*while*/
	
		/*invio le indicazioni alla socket*/
		write(sock, testo, strlen(testo)+1);
			
		read(sock, &nome, sizeof(nome));
		
		printf("nome: %s\n", nome);		
	
		fd = fopen("Database/lista_utenti.txt", "r");
		if(fd==NULL){
			printf("ERRORE: il file non e' stato aperto.\n");
			exit(0);
		}
	
		if (cerca_utente(fd, nome)<0) printf("nome non trovato\n");
	
	
	/*possibile aggiunta risposta di successo*/
	
	fclose(fd);
}
codice:
----CLIENT-----

void gestione_client(int sock, int r){
	
	char *nome=(char *)malloc(1024);
	char *buffer=(char *)malloc(1024);
	int ris=1;
	
	if(nome==NULL || buffer==NULL){
		printf("errore client: malloc nome o buffer");
		exit(0);
	}
	
	memset(nome, 0, sizeof(nome));
	memset(buffer, 0, sizeof(buffer));
	
	/*utente registrato*/
	if(r==1){
		
		read(sock, buffer, sizeof(buffer));
		printf("%s\n", buffer);
		
		while(ris == 1){
			//printf("siamo nel while del client con la fgets\n");
			fgets(nome, 1024, stdin);
			if( nome == NULL )
				printf("errore o niente\n");
			else{
				ris = -1;
				printf("stringa inserita: %s", buffer);
			}
		}
		
		write(sock, &nome, sizeof(nome));
		
	}
	/*utente da registrarsi*/
	else if(r==2) printf("fd\n");
	
}
Penso possa essere un problema nel while(ris==1) qualcosa di concettuale, ma non riesco a trovare un a soluzione.
Grazie! ciao!