PDA

Visualizza la versione completa : [C] Input da tastiera continuato fino a valore che termina ciclo


keykode20
05-05-2012, 17:14
Scusate per la banalità della domanda che sicuramente è già stata posta ma non riesco a trovare nessun post ne una soluzione su google.

sto facendo una "copia" della rubrica telefonica che sta sul sito in C...
per inserire dati da tastiera ho usato il classico scanf("...",...) ... solo che nel momento in cui premo invio al posto di apparire "inserisci numero telefonico" mi chiede ancora un stringa.... mi ricordo che avevo letto nel forum che bisognava fare un while prima dello scan... uno cosa del tipo


wihle(!getchar)
scanf("....");


per fare in modo che il programma capisse la fine dell input per passare alla prossima istruzione...
qualcuno mi puo rinfrescare la memoria?
grazie per la pazienza e scusate ancora

oregon
05-05-2012, 17:23
Dopo la scanf

while(getc(stdin)!='\n');

MItaly
05-05-2012, 17:26
Occhio però che in quella maniera se l'utente preme Ctrl-D o avviene un qualche errore di lettura finisci in un loop infinito...

keykode20
05-05-2012, 17:29
ora funziona ma si aspetta due stringhe sia per il nome che per il numero.... io invece vorrei che all "invio" funzionasse...

keykode20
05-05-2012, 17:40
come posso risolvere questa cosa? il while(getc(stdin)!='\n') non ha avuto il comportamento desiderato...

oregon
05-05-2012, 17:47
Non hai ancora mostrato il codice ... come risponderti?

keykode20
05-05-2012, 17:51
void AggiungiUtente(plist p){
contatto k; //contatto da aggiungere
printf("\n inserisci nome e cognome : ");
scanf("%s\n",&k.nome);
printf("\n%s\n",k.nome); //una piccola verifica per vedere il risultato
printf("\ninserisci numero di telefono: ");
scanf("%d\n",&k.numero);
printf("\n%d\n",k.numero);
inserisciTesta(&p,k);
printf("\noperazione completata\n\n");
}

inserisciTesta è stato testato e funziona correttamente quindi non ho voluto mettere la sua implementazione...
plist è una lista con i campi info e next
contatto è munito dei campi: nome, numero.

oregon
05-05-2012, 17:53
Dalle scanf elimina tutti i \n

keykode20
05-05-2012, 17:54
hai ragione sono un vero idiota! :dhò:

keykode20
05-05-2012, 17:56
ma perchè questo while deve andare dopo e non prima dello scanf?
non dovrebbe essere
"finchè non premi invio continua a leggere da tastiera?"

Loading