Sto sviluppando un applicazione client/server ed ho un problema quando devo leggere un nick.. più che un problema è un dettaglio che però mi infastidisce.. mi spiego meglio.. il codice nel client è questo:
Codice PHP:
printf("Inserisci il nickname con cui vuoi giocare:\n");
LetturaStringa ( Nick, 20 );
questo funziona, ma standoci lo \n al termine del printf praticamente il nickname viene scritto nella riga successiva.. io invece vorrei che fosse inserito sulla stessa riga.. quindi ho pensato di modificare così:
Codice PHP:
printf("Inserisci il nickname con cui vuoi giocare: ");
LetturaStringa ( Nick, 20 );
ma facendo in questo modo non funziona.. cioè non esce scritto niente, e dopo che ho scritto il nick e dato l'invio, esce scritto "Inserisci il nickname con cui vuoi giocare: " quando invece dovrebbe uscire prima.. il codice della funzione LetturaStringa è il seguente:
Codice PHP:
void LetturaStringa ( char Stringa[], int MaxLen ) {
char Carattere;
int Indice = 0;
// Leggo un carattere alla volta dalla shell finchè non viene premuto il tasto INVIO
// oppure accade qualche errore. I primi 20 caratteri vengono inseriti nell'array del Nick.
while ( read ( STDIN_FILENO, &Carattere, 1) > 0 && Carattere != '\n' )
{
if ( Indice < MaxLen - 1)
Stringa[Indice++] = Carattere;
}
Stringa[Indice] = '0';
// prima dello zero c'è backslash.. non l'ho inserito perchè qui sul forum backslash0 faceva vedere una cosa strana come questa \0
}
qualcuno sa spiegarmi il perchè di questo comportamento anomalo? e come posso ovviare a tale inconveniente? grazie