PDA

Visualizza la versione completa : [C] Funzione scanf() e ciclo a vuoto indesiderato


buji
02-07-2007, 23:18
Buongiorno, scusate la domanda banale (sono veramente alle prime armi).
Il ciclo seguente ha un comportamento strano, fa sempre un giro a vuoto..
Ho già provao ad intercettare il \n ma non riesco a capire.


printf("\nSelezionare la direzione: ");
while(scanf("%c",&scelta) == 1 && ripeti == 0) {
printf("Scelta = %c\n",scelta);
if (scelta == 'p') {
printf("Precedente\n");
}
else if (scelta == 's') {
printf("Successivo\n");
}
else if(scelta == 'f') {
printf("Fine\n");
ripeti = 1;
}
else {
printf("Scelta non valida\n");
printf("\nSelezionare la direzione: ");
}
}

Grazie mille a tutti

MrX87
03-07-2007, 15:39
ehi ciao...guarda sono anche io alle prime armi col C, ho provato a risolvere il tuo problema...sperando d essereci riuscito, comunque secondo me invece di usare un while potresti farlo con un do...while, dovrebbe andare, poi per quanto riguarda il \n basta mettere un altro %c nella scanf...che si maggia il carattere "\n"...comunque se mi dici dome si fa e mettere il codice nei messaggi...così magari te lo scrivo...
grazie
MrX87

LeleFT
03-07-2007, 15:55
Originariamente inviato da MrX87
comunque se mi dici dome si fa e mettere il codice nei messaggi...così magari te lo scrivo...
grazie
MrX87
Quando scrivi il messaggio, premi il pulsante (#) in alto che ti fa apparire i due tag [*CODE] e [*/CODE] (senza l'asterisco rosso), oppure li scrivi direttamente tu (ovviamente senza l'asterisco).

All'interno di questi tag posti il codice.


Ciao. :ciauz:

MrX87
03-07-2007, 16:21
Guarda...non c riesco...nn so x quale motivo assurdo...facciamo che te lo copio direttamente così...grazie lo stesso


#include <stdio.h>
int main ()
{
int ripeti=0;
char scelta;

printf("\nSelezionare la direzione: ");
do {
scanf("%c%c",&scelta);
printf("Scelta = %c\n",scelta);
if (scelta == 'p') {
printf("Precedente\n");
}
else if (scelta == 's') {
printf("Successivo\n");
}
else if(scelta == 'f') {
printf("Fine\n");
ripeti = 1;
}
else {
printf("Scelta non valida\n");
printf("\nSelezionare la direzione: ");
}
} while( ripeti == 0);
}

LeleFT
03-07-2007, 16:30
Non mi pare una cosa difficile: si apre una parentesi quadra, si scrive CODE, si chiude la quadra.
Si incolla il codice da inviare e alla fine si riapre una parentesi quadra, si scrive /CODE e si chiude la quadra... :incupito:

[ CODE ]
codice da visualizzare nel messaggio
[ /CODE ]


Te lo sistemo io...


Ciao. :ciauz:

MrX87
03-07-2007, 17:34
comunque ci sono riuscito...siccome avevo fatto anteprima e non lo aveva visualizzato pensavo fosse sbagliato...invece era giusto...grazie lo stesso
e poi...cosa devi sistemare??
MrX87

buji
03-07-2007, 20:18
Originariamente inviato da MrX87
ehi ciao...guarda sono anche io alle prime armi col C, ho provato a risolvere il tuo problema...sperando d essereci riuscito, comunque secondo me invece di usare un while potresti farlo con un do...while, dovrebbe andare, poi per quanto riguarda il \n basta mettere un altro %c nella scanf...che si maggia il carattere "\n"...comunque se mi dici dome si fa e mettere il codice nei messaggi...così magari te lo scrivo...
grazie
MrX87
Grazie mille, in realtà oltre che una questione di ciclo corretto, è necessario intercettare anche la sequenza di escape.
Grazie ancora

LeleFT
04-07-2007, 08:28
Originariamente inviato da MrX87
e poi...cosa devi sistemare??

Ho già sistemato io il codice del tuo ultimo messaggio (non era inserito nei tag CODE).


Ciao. :ciauz:

Loading