Newsgroup: it.comp.lang.c++
Titolo: problema con lettura caratteri

Ho scritto una procedura che legge le lettere digitate dall'utente,
controlla se sono lettere, e le unisce in un'unica parola, ma non funziona.
Il problema è questo: quando nel main effettuo la chiamata della LeggiParola
per la prima volta tutto ok, la seconda volta non funziona più. Per qualche
motivo la seconda volta che entra nella procedura non entra nel while (vedi
codice qui sotto), come faccio a risolvere??
ECCO LA CHIAMATA DAL MAIN:
char I_mittente [50];        // le parole lette verranno salvate qui dalla
                                        //procedura
char I_destinatario [50];  //
LeggiParola (N_mittente);    // prima lettura, tutto OK
LeggiParola (I_mittente);      // seconda lettura, appena premi un tasto da
                                            // di ritorno
                                            // una stringa vuota, non ha
                                            // letto nulla
ED ECCO LA PROCEDURA:
void LeggiParola (char* parola,char c)
{
  char l='a';
  int i=0;
  char buffer[101];  // salva temporaneamente le stringhe lette
  for (i=0;i<=100;i++)   // azzero locazioni array
  buffer[i]=0;
  for (i=0;i<=20;i++)    // azzero locazioni array
  parola[i]=0;
  i=0;
  cin.get (buffer,2);
  l=buffer[0];
  while ((l>=97&&l<=122)) {      // controllo che sia una lettera
    parola [i]=l;                            // salvo la lettera letta
    i++;
    cin.get (buffer,2);                    // leggo la prossima lettera
    l=buffer[0];                            // la salvo temporaneamente, la
                                                //condizione del while
                                                 //controllerà se è
                                                   // effettivamente una
                                                  // lettera
  }
return;
}
Spero che qualcuno possa aiutarmi,
grazie, ciao.

 codice qui sotto), come faccio a risolvere??
Probabilmente č il solito problema del new line che resta nel buffer di
tastiera. Svuotalo con
while ( cin.get() != '\n' );
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 EMG
Ho fatto come mi hai consigliato, ma niente, ora il codice è così:
LA CHIAMATA DAL MAIN:
char I_mittente [50];        // le parole lette verranno salvate qui dalla
                                        //procedura
char I_destinatario [50];  //
LeggiParola (N_mittente);    // prima lettura, tutto OK
LeggiParola (I_mittente);      // seconda lettura, appena premi un tasto da
                                            // di ritorno
                                            // una stringa vuota, non ha
                                            // letto nulla
ED ECCO LA PROCEDURA:
void LeggiParola (char* parola)
{
  char l='a';
  int i=0;
  char buffer[101];  // salva temporaneamente le stringhe lette
  for (i=0;i<=100;i++)   // azzero locazioni array
  buffer[i]=0;
  for (i=0;i<=20;i++)    // azzero locazioni array
  parola[i]=0;
  i=0;
  cin.get (buffer,2);
  l=buffer[0];
  while ((l>=97&&l<=122)) {      // controllo che sia una lettera
    parola [i]=l;                            // salvo la lettera letta
    i++;
    cin.get (buffer,2);                    // leggo la prossima lettera
    l=buffer[0];                            // la salvo temporaneamente, la
                                                //condizione del while
                                                 //controllerà se è
                                                   // effettivamente una
                                                  // lettera
  }
while ( cin.get() != '\n' );    // ecco l'ultima modifica
return;
}
Una volta entrato nel while dell'ultima modifica non ne esce più. Mah!
AIUT...!!!!!!!!!!!

 Ho fatto come mi hai consigliato, ma niente, ora il codice č cosě:
A me funziona regolarmente. Forse, semplicemente, non ti sei accorto che
fai un test sulle sole minuscole e la prima maiuscola interrompe la
lettura? Usa la funzione isalpha().
