printf("\t\t\t** Menu **\n\n");
printf("\t\t\t1) Funzione 1\n");
printf("\t\t\t2) Funzione 2\n");
printf("\t\t\t3) ........\n");
printf("\t\t\t4) .......\n\n");
printf("\t\t\t Scelta: ");
do {
scanf("%d",&scelta);
} while ( (scelta < 1) || (scelta > 4) );
vado ad effettuare un controllo sulla variabile scelta e dico se è di 4 devo ripetere la scelta .. il problema è che se inserisco un numero ( al di fuori dell 'intervallo ) do invio il cursore della shell va in basso...ecco, volevo sapere se c'è una funzione che mi permetta di ri-posizionare il cursore sempre davanti la stringa "Scelta: " o se esiste un altro modo per fare questa cosa...
grazie!
...Ma io, senza legge, rubai in nome mio,
quegli altri, nel nome di dio...
premesso che non so come si faccia, ma avendo lo stesso problema devi agire più o menu cosi;
1) fai una funzione menu
2)alla prima istruzion del menu piazzi system("clear");, ti serve per pulire lo schermo
3) se la scelta è 4 richiami la funzione menu
Credo che cosi funzioni e risolvi il tuo problema, poi credo che chiederai cmq come rispostare il cursore.....
non ci ho mai provato e non so se può funzionare ma la mia idea è qualcosa del tipo
if (ha premuto invio) {
printf("\b");
}
dove \b sta a significare backspace, ovvero gli fa stampare un "cancella indietro" che dovrebbe mangiarsi l'invio dell'utente. Ok sto delirando vero???
max.achille ha scritto:
non ci ho mai provato e non so se può funzionare ma la mia idea è qualcosa del tipo
if (ha premuto invio) {
printf("\b");
}
dove \b sta a significare backspace, ovvero gli fa stampare un "cancella indietro" che dovrebbe mangiarsi l'invio dell'utente. Ok sto delirando vero???
non funziona
credo che l'inizio dello stream di output coincida con l'inizio della riga
(non funzionano neanche le funzioni per la gestione del cursore nei file)
"Tentare è il primo passo verso il fallimento" Homer J.
int Menu() {
char scelta;
int s;
printf("\t\t\t** Menu **\n\n");
printf("\t\t\t1) .......\n");
printf("\t\t\t2) ....... \n");
printf("\t\t\t3) ....... \n");
printf("\t\t\t4) ....... \n");
printf("\t\t\t5) ....... \n\n");
printf("\t\t\t Scelta: ");
do {
printf("\033[9;36H");
scanf("%c",&scelta);
s = scelta - 48;
printf(" ");
} while ( (s < 1) || (s > 5) );
return s;
}
int main() {
int r;
system("clear");
r = Menu();
printf("Uscita %d\n",r);
}
l' unica noia è che se digito 7 ( o qualunque altra cosa al di fuori dell intervallo) il cursore si riposiziona ma il 7 rimane.. però funziona alla grande..
edit anche con printf("\033[9;36H"); funziona..però rimane sempre quel problema
ri edit risolto mettendo un printf(" ");
Ultima modifica di Anonymous il domenica 17 giugno 2007, 17:00, modificato 1 volta in totale.
...Ma io, senza legge, rubai in nome mio,
quegli altri, nel nome di dio...